Radiobutton集团的Select Case是否有可能?

时间:2010-07-30 08:43:52

标签: asp.net vb.net radio-button

我说4个asp.net radiobuttons被分组,我想找出哪个被检查。

看起来很自然的事情是:

Select Case RadioButton.Checked = True
        Case myRadioButton1
        Case myRadioButton2
        Case myRadioButton3
        Case Else

End Select

我刚刚收到'对非共享成员引用的引用'错误。这是一种耻辱,因为它似乎是一种干净的方式来做这个测试..它可能吗?

3 个答案:

答案 0 :(得分:9)

Select Case True

  Case RadioButton1.Checked

  Case RadioButton2.Checked

  Case RadioButton3.Checked

  Case Else

End Select

答案 1 :(得分:0)

没有。 RadioButton类的Checked属性是非共享的,因此除非有实例,否则无法获取其值。你可以使用ElseIf链来做到这一点,但最干净的解决方案IMO就是使用RadioButtonList,它允许你动态添加项目并在一次调用中读取所选项目,就像使用DropdownList一样。

答案 2 :(得分:0)

您可以使用RadioButtonList代替。 您只能在select / case中检查原始数据类型。使用普通的RadioButtons,只有在CheckedChanged事件中处理所有CheckBox时,才能检查CheckedChanged事件中的引用。例如:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        AddHandler Me.RadioButton1.CheckedChanged, AddressOf CheckedChanged
        AddHandler Me.RadioButton2.CheckedChanged, AddressOf CheckedChanged
    End Sub

    Private Sub CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
       If sender Is Me.RadioButton1 Then

        ElseIf sender Is Me.RadioButton2 Then
            '........
        End If
    End Sub

但不管怎样,这不是你的问题。如上所述使用RadiobuttonList,或者在checked-state上使用If / else,因为它更自然。