在这里找到这个。有人可以解释这是如何工作的吗?特别是从功能行开始。
Dim rButton As RadioButton =
GroupBox1.Controls
.OfType(Of RadioButton)
.Where(Function(r) r.Checked = True)
.FirstOrDefault()
在这里找到这个。有人可以解释这是如何工作的吗?特别是从功能行开始。
Dim rButton As RadioButton =
GroupBox1.Controls
.OfType(Of RadioButton)
.Where(Function(r) r.Checked = True)
.FirstOrDefault()
这就是所谓的 LINQ。
给定一个对象集合(所以是GroupBox1.Controls
一个RadioButton
对象集合),您可以查询该集合。FirstOrDefault
因此,您有一个查询,它从满足检查条件的 RadioButton 集合中检索第一个 RadioButton(如果没有,则返回 null )(Function(r) r.Checked = True
它是一个 lambda 表达式)。因为Controls
是对象的集合,所以需要将其转换为RadioButton
so,才能访问该IsChecked
属性。希望解释有所帮助;无论如何你必须检查LINQ 参考 VB
所以上面的代码行正在慢慢缩小到选中的复选框。它从组开始,然后抓取该 groupbox 内的所有控件,然后仅选择作为单选按钮的控件,然后仅选择已选中字段设置为 true 的单选按钮,然后选择第一个单选按钮符合所有这些标准,其中应该只有一个。
使用一个处理程序处理所有 Checkedchanged 事件可能更有效,而不是遍历所有单选按钮:
private void radioButton_CheckedChanged(object sender, EventArgs e)
{
RadioButton rb = (RadioButton)sender;
if (rb.Checked)
MessageBox.Show(rb.Name);
}