我说4个asp.net radiobuttons被分组,我想找出哪个被检查。
看起来很自然的事情是:
Select Case RadioButton.Checked = True
Case myRadioButton1
Case myRadioButton2
Case myRadioButton3
Case Else
End Select
我刚刚收到'对非共享成员引用的引用'错误。这是一种耻辱,因为它似乎是一种干净的方式来做这个测试..它可能吗?
答案 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,因为它更自然。