Reza Oruji Ответов: 5

добавление динамических кнопок на панель


у меня есть панель в моей форме , и я добавляю на нее динамические кнопки во время выполнения
но кнопки на экране не появляются
это мой код.
int basex = panel1.Location.X;
int basey = panel1.Location.Y;
            for (int i = 0; i < 5; i++)
            {
                Button b = new Button();
                b.Left = basex;
               b.Top = basey;
                basey += 50;
                b.Name = String.Format("btnDriver{0}", i + 1);
                b.Text = String.Format("btnDriver{0}", i + 1);
                b.Click += new EventHandler(b_Click);
                panel1.Controls.Add(b);
            }

[no name]

Ваш код отлично работает для меня нормально. Проверьте высоту панели. Или попробуйте добавить кнопки горизонтально, а не вертикально.

Reza Oruji

когда я делаю панель больше, она показывает кнопки в середине панели .но почему я должен изменять размер панели ?

[no name]

Потому что панель недостаточно велика для начала? 50 на значение Y, то совсем немного. Попробуйте меньшее число.

Neema Derakhshan

Реза Джан, агар ба 1 css be bitton padding bedid kar mikone.

уважаемый Реза, установите отступ для кнопки с помощью css, это будет работать.

[no name]

Как бы вы ожидали, что CSS будет работать в приложении Winforms?

Reza Oruji

Спасибо но это проект winform :)

Neema Derakhshan

о,Извините, ребята

5 Ответов

Рейтинг:
22

Reza Oruji

я использовал FlowLayoutPanel и TableLayoutPanel, и это решило мою проблему.
больше ничего не нужно делать...

int basex = panel1.Location.X;
   int basey = panel1.Location.Y;
   for (int i = 0; i < 5; i++)
   {
       Button b = new Button();
       b.Left = basex;
       b.Top = basey;
       basey += 50;
       b.Name = String.Format("btnDriver{0}", i + 1);
       b.Text = String.Format("btnDriver{0}", i + 1);
       b.Click += new EventHandler(b_Click);
       flowLayoutPanel1.Controls.Add(b);
   }


Рейтинг:
2

Thomas Daniels

Попробуйте указать размер кнопки:

int basex = panel1.Location.X;
int basey = panel1.Location.Y;
            for (int i = 0; i < 5; i++)
            {
                Button b = new Button();
                b.Left = basex;
               b.Top = basey;
                b.Size = new Size(100, 50); // <== add this line
                basey += 50;
                
 
                b.Name = String.Format("btnDriver{0}", i + 1);
                b.Text = String.Format("btnDriver{0}", i + 1);
                
                
                
                b.Click += new EventHandler(b_Click);
                panel1.Controls.Add(b);
            }

Надеюсь, это поможет.


Reza Oruji

это не работает. когда я добавляю непосредственно в форму, она работает, но не в панели

Thomas Daniels

Добавлена ли панель в форму?

Рейтинг:
2

BillWoodruff

Ваш исходный код прекрасно работает для меня без каких-либо изменений: наиболее вероятными гипотезами для того, что вы наблюдаете, являются:

1. Вы не добавили панель в ControlCollection формы или какой-либо другой действительный и видимый ContainerControl внутри формы.

2. или вы устанавливаете для свойства " видимый "панели значение "false".


Рейтинг:
2

Member 13485025

Из-за неправильного расположения кнопка не видна.
Расположение кнопки вы установили в соответствии с формой (которая не является родительской кнопкой). Вы должны добавить местоположение относительно панели. Просто для проверки вы можете добавить местоположение как (5,5).Тогда ваша кнопка будет видна на панели.


CHill60

Вроде того, что обсуждалось в комментариях еще 25-августа-13

Рейтинг:
1

Chintan Desai1988

Возьмите Панель управления на своей странице .aspx и после этого напишите код на коде за событием Page_Load
как:

protected void Page_Load(object sender, EventArgs e)
    {
        Button b = new Button();
        //form1.Controls.Add(b);
        Panel1.Controls.Add(b);
        b.Text = "Click";
        b.Click+=new EventHandler(b_Click);
    }


Он работает правильно......если у вас возникнут какие-либо проблемы, скажите мне, что они легко решатся.....:-)


[no name]

Приложения Winform не имеют страниц aspx.

Chintan Desai1988

вы должны знать, что ... к, несомненно, даст вам правильный ответ....:-)

[no name]

Мне не нужен правильный ответ. Я уже знал ответ. И ОП четко обозначил свой вопрос как относящийся к Winforms.