Vb.net 检测单选按钮更改

Vb.net 检测单选按钮更改,vb.net,radio-button,detect,Vb.net,Radio Button,Detect,我在一个表单上有大约50个单选按钮,我不想为每个单选按钮创建一个if语句,以便在一个表单发生更改时进行检测,因为它们不是组框的一部分。如何检测任何radiobutton是否已更改,然后将名称写入另一个变量?您始终可以将所有50个radiobutton的CheckedChanged事件设置为同一事件处理程序。 这是一个通过代码完成的示例: Private Sub OnChange(sender As System.Object, e As System.EventArgs) Dim rb

我在一个表单上有大约50个单选按钮,我不想为每个单选按钮创建一个if语句,以便在一个表单发生更改时进行检测,因为它们不是组框的一部分。如何检测任何radiobutton是否已更改,然后将名称写入另一个变量?

您始终可以将所有50个radiobutton的CheckedChanged事件设置为同一事件处理程序。 这是一个通过代码完成的示例:

Private Sub OnChange(sender As System.Object, e As System.EventArgs)
    Dim rb = CType(sender, RadioButton)
    Console.WriteLine(rb.Name + " " + rb.Checked.ToString)
End Sub

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    AddHandler Me.RadioButton1.CheckedChanged, AddressOf OnChange
    AddHandler Me.RadioButton2.CheckedChanged, AddressOf OnChange
    ' and so on .....'
End Sub

我是通过代码完成的,没有使用设计器来避免长时间添加
句柄RadioButton1.CheckedChanged,RadioButton2.CheckedChanged……

将所有单选按钮放在一个面板上,并通过面板单选按钮控件循环,以编程方式为每个控件添加相同的事件处理程序,如@Steve所述。我喜欢处理事件的一种方法是为每个单选按钮分配一个索引到其标记属性中。然后,只需将任何相关数据存储在对象列表中,并通过使用其标记从列表中拉出相应的对象来访问该单选按钮的数据。比手工做容易多了

编辑:很好地抓住了@neolik。更新答案。循环所有复选框控件。是的,我本打算提出这个建议,然后我注意到了你的答案。因此,有一个+1。