2015-12-08 3 views
0

Я смог создать кнопки. Я буду использовать около 65 кнопок, как вы используете, если еще условие на кнопках? Может кто-нибудь, пожалуйста, покажите мне пример? Заранее спасибо.Если еще условие на переключателях

private void createButtons() 
    { 
     flowLayoutPanel1.Controls.Clear(); 
     for(int i = 0;i <10;i++) 
     { 
      RadioButton b = new RadioButton(); 
      b.Name = i.ToString(); 
      b.Text = "radiobutton" + i.ToString(); 
      b.AutoSize = true; 
      flowLayoutPanel1.Controls.Add(b); 

     } 
    } 
+1

«Как вы используете, если другое условие на кнопках», которое вам нужно будет разработать. –

+0

Я новичок. Когда я перетаскиваю кнопку в форме, каждая кнопка имеет свое имя i.e radionbutton1 radiobutton2 и т. Д. Когда вы создаете кнопки динамически, я не знаю, какая кнопка 1 или кнопка2. В приведенном выше примере, как я могу сказать: «если radiobutton1.checked сделать это»? и т. д. – Dominique1256

+1

Как насчет включения RadioButtons в список или массив? Поэтому вы можете использовать 'if (allRadioButtons [1] .checked) сделать это' –

ответ

0

Как насчет включения RadioButtons в список или массив? Таким образом, вы можете использовать if (allRadioButtons[1].checked) {...}.

Вот пример

private List<RadioButton> allRadioButtons = new List<RadioButton>(); 

    private void createButtons() 
    { 
     flowLayoutPanel1.Controls.Clear(); 
     for (int i = 0; i < 10; i++) 
     { 
      RadioButton b = new RadioButton(); 
      b.Name = i.ToString(); 
      b.Text = "radiobutton" + i.ToString(); 
      b.AutoSize = true; 
      flowLayoutPanel1.Controls.Add(b); 
      //add every button to the list 
      //the one with the Text radiobutton0 will be accessible as allRadioButtons[0] 
      //the one with the Text radiobutton1: allRadioButtons[1] 
      //etc 
      allRadioButtons.Add(b); 
     } 

    } 

    //you can use your list in any other method 
    private void myMethod() { 
     if (allRadioButtons[0].Checked) 
     { 
      //do something 
     } 
    } 
+0

Большое вам спасибо для вашей помощи Андреа. Теперь я понимаю. До сих пор я использовал списки для вызова свойств класса, строки, int. Теперь с этим примером я могу видеть и понимать логику. Еще раз спасибо. – Dominique1256

+0

@ Dominique1256 - Если вам нравится Андреа ответьте, вы должны принять его, а также рассмотреть вопрос о его голосовании. –

+0

Почему все так сложно сначала :) Как вы проголосуете, как я отмечаю это как решение? Я нажал на голосование и ничего не произошло. Было бы намного легче для таких новых людей, как я, показать «если вы хотите проголосовать и принять его нажмите здесь». – Dominique1256

0

Если ответ Андреа не работал для вас (так как вы не пометить его как решение), другой вариант будет создать контейнер, такой как GroupBox , а затем добавьте свои программно созданные элементы управления RadioButton в этот контейнер. Тогда вы можете перебираем элементы управления, принадлежащие к GroupBox, как это:

foreach (Control c in myGroupBox.Controls) 
{ 
    if ((RadioButton)c).Checked) 
     //Do something 
} 

Это будет цикл по всем элементам управления в GroupBox и бросили их в RadioButton и проверить, если они проверены или нет. Я использовал что-то похожее на это как основу для множества требований в разных приложениях; очень просто сделать рекурсивный метод, который принимает ControlCollection, перебирает его и применяет логику по мере необходимости в зависимости от некоторого состояния, типа типа управления или, возможно, значения элемента управления Tag.

Затем по мере добавления RadioButton сек к GroupBox во время выполнения вы просто сделать что-то вроде myGroupBox.Controls.Add(b) где b является RadioButton, который вы создали в вашем for цикла в примере кода. More on runtime control creation here.

+0

Теперь, когда я набирал 65 динамиков на панели, переключатели не идеально выстраиваются в линию. Если бы я использовал ASP.net, я бы знал, как это сделать с CSS, как мы это делаем в winform? – Dominique1256

+0

Вы можете установить их свойство «Местоположение» при его создании. Выясните, какая высота «RadioButton» затем добавляет несколько пикселей для заполнения, чтобы они были равномерно распределены. – sab669

+0

Я новичок в winform, поэтому, если я не вижу примера, мне сложно реализовать ваше предложение. Кто-то раньше говорил не использовать 65 проекторов на дизайнере, но он отлично работает, и все радиобарабаны прекрасно выстроились в линию. Если там есть нижняя сторона, используя этот дизайнер ?. Спасибо. – Dominique1256

Смежные вопросы