2016-12-07 45 views
0

如果按钮3被点击,它应该执行一个单击11个单选按钮之一。 这个程序的工作原理,但我想知道是否有任何简短的方式输入这个。单击一个随机单选按钮c#

我想知道,因为如果我想用50个单选按钮做这个例子,那么它会是一个极长的时间。

private void button1_Click(object sender, EventArgs e) 
    { 
     Random RandomRadioButton = new Random(); 
     int Simuleer = RandomRadioButton.Next(0, 12); 

     if (Simuleer == 0) { radioButton0.PerformClick(); } 
     if (Simuleer == 1) { radioButton1.PerformClick(); } 
     if (Simuleer == 2) { radioButton2.PerformClick(); } 
     if (Simuleer == 3) { radioButton3.PerformClick(); } 
     if (Simuleer == 4) { radioButton4.PerformClick(); } 
     if (Simuleer == 5) { radioButton5.PerformClick(); } 
     if (Simuleer == 6) { radioButton6.PerformClick(); } 
     if (Simuleer == 7) { radioButton7.PerformClick(); } 
     if (Simuleer == 8) { radioButton8.PerformClick(); } 
     if (Simuleer == 9) { radioButton9.PerformClick(); } 
     if (Simuleer == 10) { radioButton10.PerformClick(); } 
     if (Simuleer == 11) { radioButton11.PerformClick(); } 
    } 
+0

这个问题更适合Code Review http://codereview.stackexchange.com/ – FCin

+0

创建一个名为'rButtons'的名单并在其中存储所有的单选按钮,比如'foreach(Control rb in this.Controls){if(rb是RadioButton){rButtons.Add((RadioButton)rb);}}'或者如果你想更精明些,for循环可以像这样'foreach(RadioButton rb在这个.Controls.OfType ()){/ *代码* /}' –

+0

我不是'C#'家伙,但这不是简单地通过使用for()'循环解决? – 2016-12-07 09:55:39

回答

1

如果这是WinForms试试这个:

string name = string.Format("radioButton{0}", Simuleer); 
this.Controls/* or container that groups thease radio buttons */ 
      .OfType<RadioButton>().FirstOrDefault(ctrl => ctrl.Name == name).PerformClick(); 
+1

它应该是=> string name = string.Format(“radioButton {0}”,Simuleer); – jignesh

+1

这不起作用。你不能在'FirstOrDefault'的结果上使用'OfType <>'。您必须先应用'OfType <>'。然后你最好使用First而不是FirstOrDefault。在这种情况下,'InvalidOperationException'比后续的'NullReferenceException'要好,因为它会说明实际的问题。 – Sefe

+1

你错过了string.Format()的'{0}' –

0

这是有点长,但这段代码将很容易在未来的维护。

RadioButtonListSeparate Radio buttons相比较。

 protected void Button1_Click(object sender, EventArgs e) 
     { 
      Random random = new Random(); 

      var radioButtonNumber = random.Next(RadioButtonList1.Items.Count); 

      RadioButtonList1.SelectedIndex = radioButtonNumber; 

      RadioButtonListClick(radioButtonNumber); 

     } 

     private void RadioButtonListClick(int number) 
     { 
      switch (number) 
      { 
       case 0: 
        // Call the function realted to radio button 0 in your case. 
        break; 
        . 
        . 
        . 

      } 
     } 

注:这将确保在编译时,该代码将无法在运行时失败。作为比较,以确保radiobutton ID应该是相同的,如果它没有找到一个,那么它会抛出运行时错误。