4

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

4

2 回答 2

5

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

编辑:很好的捕捉@Neolisk。更新了答案。

于 2013-03-20T21:16:00.887 回答
4

您可以始终将所有 50 个单选按钮的 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 .......

于 2013-03-20T20:49:44.813 回答