代码之家  ›  专栏  ›  技术社区  ›  Markive

选择RadioButton组上的案例是否可能?

  •  2
  • Markive  · 技术社区  · 14 年前

    我说了4个分组的ASP.NET单选按钮,我想找出选中的是哪个。

    看起来很自然的做法是:

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

    我只得到一个“引用非共享成员引用”错误。很遗憾,因为这似乎是一个很干净的测试方法。有可能吗??

    3 回复  |  直到 14 年前
        1
  •  9
  •   fivebob    14 年前
    Select Case True
    
      Case RadioButton1.Checked
    
      Case RadioButton2.Checked
    
      Case RadioButton3.Checked
    
      Case Else
    
    End Select
    
        2
  •  0
  •   tdammers    14 年前

    不。类RadioButton的选中属性是非共享的,因此除非有实例,否则无法获取其值。您可以使用elseif链来完成此操作,但IMO最干净的解决方案是使用RadioButtonList,它允许您动态添加项目并在一次调用中读取所选项目,就像使用DropDownList一样。

        3
  •  0
  •   Tim Schmelter    14 年前

    你可以使用 RadioButtonList 相反。 只能在select/case中检查基本数据类型。对于普通的单选按钮,只有在所有复选框都在其中处理时,才能在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,或者检查状态下的if/else,因为它更自然。