【问题标题】:Getting Which Radio Button is Checked in a Groupbox获取在 Groupbox 中选中了哪个单选按钮
【发布时间】:2013-10-19 20:44:42
【问题描述】:

在这里找到这个。有人可以解释这是如何工作的吗?尤其是从函数行开始。

 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?

【问题讨论】:

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


    【解决方案1】:

    这就是所谓的 LINQ。

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

    【讨论】:

    • FirstOrDefault 的用途是什么?
    • FirstOrDefault, (as First) 检索集合的第一项,唯一的区别是FirstOrDefault 如果没有“第一项”项,则检索默认值(通常为 null) . First 在这种情况下会抛出异常。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-07-23
        • 1970-01-01
        • 2011-07-12
        • 2019-06-16
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 1970-01-01
        • 2014-11-17
        相关资源
        最近更新 更多