【问题标题】:How do I use a for- loop through 10 radio buttons to see which one is checked如何通过 10 个单选按钮使用 for- 循环来查看选中了哪个单选按钮
【发布时间】: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


【解决方案1】:
Option Strict On
Public Class Form39
Private Sub RadioButton1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton1.CheckedChanged, RadioButton5.CheckedChanged, RadioButton4.CheckedChanged, RadioButton3.CheckedChanged, RadioButton2.CheckedChanged 'add more RadioButton  CheckedChanged event here
    Dim radio As Object = sender
    Dim radiobox = CType(radio, RadioButton)
    '// radiobox was checked
    '// do whatever you want to do next

End Sub
End Class

【讨论】:

    【解决方案2】:

    您可以在表单中的单选框之间使用foreach循环来检查单选框的检查情况。

    【讨论】:

      最近更新 更多