检测单选按钮更改

时间:2013-03-20 20:34:27

标签: vb.net radio-button detect

我在一个表单上有大约50个radiobuttons,我不想为每个表单创建一个if语句来检测何时更改,它们不是组框的一部分。如何检测是否有任何radiobutton更改,然后将名称写入另一个变量?

2 个答案:

答案 0 :(得分:3)

您始终可以将所有50个radiobuttons的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

我是通过代码完成此操作而不使用设计器来避免长时间添加Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged .......

答案 1 :(得分:3)

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

编辑:好抓@Neolisk。更新了答案。