一尘不染

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

c#

使用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;
     }

阅读 322

收藏
2020-05-19

共1个答案

一尘不染

您可以使用LINQ:

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

请注意,这要求所有单选按钮都直接位于同一容器中(例如,面板或窗体),并且容器中只有一组。如果不是这种情况,则可以List<RadioButton>在构造函数中为每个组创建,然后编写list.FirstOrDefault(r => r.Checked)

2020-05-19