在这里找到了这个。有人可以解释这是如何工作的?特别是从功能线开始。
Dim rButton As RadioButton =
GroupBox1.Controls
.OfType(Of RadioButton)
.Where(Function(r) r.Checked = True)
.FirstOrDefault()
答案 0 :(得分:1)
所以上面的代码行正在慢慢缩小到所选的复选框。它从组开始,然后抓取该组框内的所有控件,然后仅选择作为单选按钮的控件,然后仅选择将checked字段设置为true的单选按钮,然后选择第一个单选按钮适合所有这些标准,其中应该只有一个。
答案 1 :(得分:1)
这叫做LINQ。
Givin是一组对象(GroupBox1.Controls
是RadioButton
个对象的集合),您可以查询该集合。
所以,你有一个查询从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);
}