【发布时间】:2026-01-06 14:10:01
【问题描述】:
基本上我有 10 个单选按钮,当我单击一个时,我希望弹出一个消息框,其中包含与该单选按钮关联的数字。但是,我不想单独浏览每个单选按钮并添加一个 if radioButton1.checked then messageBox.show("1") 例如。 我创建了一个名为 CheckRadioButton 的事件处理程序,它将处理所有 10 个按钮事件,但我的 for 循环似乎不起作用......这是代码
Public Class Form1
Dim ListOFNames() As RadioButton = {RadioButton1, RadioButton2, RadioButton3, RadioButton4, RadioButton5, RadioButton6, RadioButton7, RadioButton8, RadioButton9,
RadioButton10}
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
End Sub
Private Sub CheckRadioButton(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged, RadioButton3.CheckedChanged,
RadioButton4.CheckedChanged, RadioButton5.CheckedChanged, RadioButton6.CheckedChanged, RadioButton7.CheckedChanged, RadioButton8.CheckedChanged, RadioButton9.CheckedChanged, RadioButton10.CheckedChanged
For counter = 0 To 9
If ListOFNames(counter).Checked Then
MessageBox.Show(counter)
End If
Next
End Sub
Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged, RadioButton2.CheckedChanged
End Sub
Private Sub TabPage1_Click(sender As Object, e As EventArgs) Handles TabPage1.Click
End Sub
End Class
【问题讨论】:
-
无需循环。那个神秘的
sender As Object事件参数是导致事件的参数。将其转换为RedioButton并获取名称或您想要的任何内容 -
对不起,我是新手。我将如何投射?
-
Dim rb as radiobutton = DirectCast(sender, RadioButton) then use if rb is... or if rb.name=... etc. (你可以使用 If sender is RadioButton1 etc. without cast )
-
大家好,我有一个新问题。这是我的新代码:MessageBox.Show(sender.text) 例如,我单击 radiobutton1,消息显示为 1,但随后我单击第二个按钮,消息显示为 1,我将其关闭然后关闭说 2. 为什么消息显示两次/。
-
如果
sender.Text有效,那么你没有强制转换它并且需要设置Option Strict On- 对象没有文本属性
标签: vb.net for-loop eventhandler