我在一个表单上有大约50个radiobuttons,我不想为每个表单创建一个if语句来检测何时更改,它们不是组框的一部分。如何检测是否有任何radiobutton更改,然后将名称写入另一个变量?
答案 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属性中。然后只需将任何相关数据存储在对象列表中,并通过使用其标记从列表中提取相应对象来访问该单选按钮的数据。比手工操作容易得多。