如何知道检查哪个radiobutton?

时间:2013-02-07 13:42:55

标签: c# windows winforms

我有这部分代码:(在按钮的点击事件中)

           foreach (RadioButton rb in grbFiltro.Controls.OfType<RadioButton>())
       {
           if (((RadioButton)rb).Checked)
           {
               switch (true)
               {
                   case rbt1.Checked:
                       //do something
                       break;
                   case rbt2.Checked:
                      //do something
                       break;
                   case rbt3.Checked:
                        //do something
                      break;
               }
           }
       }

但是在&gt;中将radiobutton转换为字符串时出错了case rbt1.Checked

我如何解决这个问题,或者我还能使用其他什么?

3 个答案:

答案 0 :(得分:1)

var rb = grbFiltro.Controls.OfType<RadioButton>()
             .SingleOrDefault(rb => rb.Checked.GetValueOrDefault()) as RadioButton;

if (rb!=null)
    switch (rb.Name)
           {
               case "button1":
                   //do something
                   break;
               case "button2":
                  //do something
                   break;
               case "button3":
                    //do something
                  break;
           }

答案 1 :(得分:1)

你有25个按钮所以我可能会做类似

的事情
 IEnumerable<RadioButton> buttons = grbFiltro.Controls.OfType<RadioButton>();
    foreach (var Button in buttons)
    {
         if (Button.Checked)
         {
             //Do Something
         }
     }

如果您需要对每个按钮执行不同的操作,那么您将拥有一个基于您需要的if / else链,但我猜您想要存储所选的值并对其执行某些操作。

答案 2 :(得分:0)

您还可以在CheckedChange上添加侦听器,并始终将当前选定的单选按钮存储在字段中。然后,只需点击确认按钮,即可阅读该值。如果你有10个以上的无线电按钮

,这很方便
private RadioButton selectedButton;

//handler for Radio Buttons.
private void onRadioChange(Object sender, EventArgs e){
    if (((RadioButton)sender).Checked)
       this.selectedButton = (RadioButton)sender;
}

// handler for confirm button.
private void confirm(Object sender, EventArgs e){
   MessageBox.show(selectedButton.name + " selected");
}

untestet,但方法应该有效。