0

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

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

参考:如何在组框中获得选中的单选按钮?

4

3 回答 3

1

这就是所谓的 LINQ。

给定一个对象集合(所以是GroupBox1.Controls一个RadioButton对象集合),您可以查询该集合。FirstOrDefault因此,您有一个查询,它从满足检查条件的 RadioButton 集合中检索第一个 RadioButton(如果没有,则返回 null )(Function(r) r.Checked = True它是一个 lambda 表达式)。因为Controls是对象的集合,所以需要将其转换为RadioButtonso,才能访问该IsChecked属性。希望解释有所帮助;无论如何你必须检查LINQ 参考 VB

于 2013-10-11T17:21:45.053 回答
1

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

于 2013-10-11T17:19:16.493 回答
0

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

    private void radioButton_CheckedChanged(object sender, EventArgs e)
    {
        RadioButton rb = (RadioButton)sender;
        if (rb.Checked)
            MessageBox.Show(rb.Name);
    }
于 2013-10-12T03:55:10.427 回答