选中组中的哪个单选按钮?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

使用WinForms; 有没有更好的方法来找到一个组的选中的RadioButton?在我看来,下面的代码应该没有必要。当你检查一个不同的RadioButton时,它知道哪一个取消选中...所以它应该知道检查哪个。我如何在不做大量if语句(或开关)的情况下获取这些信息。

     RadioButton rb = null;

     if (m_RadioButton1.Checked == true)
     {
        rb = m_RadioButton1;
     }
     else if (m_RadioButton2.Checked == true)
     {
        rb = m_RadioButton2;
     }
     else if (m_RadioButton3.Checked == true)
     {
        rb = m_RadioButton3;
     }
提问于
用户回答回答于

你可以使用LINQ:

var checkedButton = container.Controls.OfType<RadioButton>()
                                      .FirstOrDefault(r => r.Checked);

请注意,这要求所有单选按钮都直接放在同一个容器中(例如Panel或Form),并且容器中只有一个组。如果不是这种情况,你可以List<RadioButton>在每个组的构造函数中做出s,然后写出来list.FirstOrDefault(r => r.Checked)

用户回答回答于

你可以针对一个处理程序连接所有按钮的CheckedEvents。在那里你可以很容易地得到正确的复选框。

// Wire all events into this.
private void AllCheckBoxes_CheckedChanged(Object sender, EventArgs e) {
    // Check of the raiser of the event is a checked Checkbox.
    // Of course we also need to to cast it first.
    if (((RadioButton)sender).Checked) {
        // This is the correct control.
        RadioButton rb = (RadioButton)sender;
    }
}

扫码关注云+社区