在Groupbox中检查哪个单选按钮

时间:2013-10-11 17:14:34

标签: .net vb.net radio-button groupbox

在这里找到了这个。有人可以解释这是如何工作的?特别是从功能线开始。

 Dim rButton As RadioButton = 
    GroupBox1.Controls
   .OfType(Of RadioButton)
   .Where(Function(r) r.Checked = True)
   .FirstOrDefault()

参考:How to get a checked radio button in a groupbox?

3 个答案:

答案 0 :(得分:1)

所以上面的代码行正在慢慢缩小到所选的复选框。它从组开始,然后抓取该组框内的所有控件,然后仅选择作为单选按钮的控件,然后仅选择将checked字段设置为true的单选按钮,然后选择第一个单选按钮适合所有这些标准,其中应该只有一个。

答案 1 :(得分:1)

这叫做LINQ。

Givin是一组对象(GroupBox1.ControlsRadioButton个对象的集合),您可以查询该集合。 所以,你有一个查询从RadioButton集合中检索第一个RadioButton(如果没有任何使用FirstOrDefault,则为null),它满足被检查的条件(Function(r) r.Checked = True它是一个lambda表达式) 。由于Controls是对象的集合,因此您需要将其转换为RadioButton,因此您可以访问IsChecked属性。 希望解释有所帮助;无论如何,你必须检查LINQ reference for VB

答案 2 :(得分:0)

使用一个处理程序处理所有Checkedchanged事件可能更有效,而不是遍历所有的radiobuttons:

    private void radioButton_CheckedChanged(object sender, EventArgs e)
    {
        RadioButton rb = (RadioButton)sender;
        if (rb.Checked)
            MessageBox.Show(rb.Name);
    }