2010-07-30 53 views
2

我说有4个asp.net单选按钮组合,我想知道哪一个选中了。选择Radiobutton组的案例有可能吗?

什么似乎很自然要做的是:

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

End Select 

我只是得到一个“参照非共享成员引用”的错误。这是一个耻辱,因为它似乎是这样一个干净的方式来做这个测试..是否有可能?

回答

9
Select Case True 

    Case RadioButton1.Checked 

    Case RadioButton2.Checked 

    Case RadioButton3.Checked 

    Case Else 

End Select 
+0

这么简单不敢相信我没想到的是..好打! – Markive 2010-07-30 09:27:46

0

号类单选按钮的Checked属性是不共享的,所以除非你有一个情况下,你不能得到它的价值。为此,您可以使用elseif的链条,但干净的解决方案IMO是使用一个单选按钮列表代替,这将允许你动态地添加的项目,并在一个调用读所选择的项目,就像一个下拉列表。

+0

我需要在单选按钮放置精细的控制。 Radiobuttonlists是可怕的。它们包裹单选按钮在和应用类的跨度不输入.. – Markive 2010-07-30 09:27:07

0

你可以使用一个RadioButtonList代替。 您只能在select/case中检查原始数据类型。使用普通的RadioButtons,只有在CheckedCase被在那里处理时,才能检查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状态下使用If/else,因为它更自然。