【问题标题】:Select Case on Radiobutton group is it possible?在 Radiobutton 组上选择 Case 是否可能?
【发布时间】:2011-03-23 03:28:33
【问题描述】:

我说有 4 个分组的 asp.net 单选按钮,我想找出选中的是哪一个。

看起来很自然的做法是:

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

End Select

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

【问题讨论】:

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


    【解决方案1】:

    没有。 RadioButton 类的 Checked 属性是非共享的,因此除非您有实例,否则您无法获取其值。您可以使用 ElseIf 链来执行此操作,但 IMO 最简洁的解决方案是使用 RadioButtonList 代替,这将允许您动态添加项目并在一次调用中读取所选项目,就像使用 DropdownList 一样。

    【讨论】:

    • 我需要对单选按钮的位置进行精细控制。单选按钮列表太可怕了..它们将单选按钮包装在 中,并将类应用于跨度而不是输入..
    【解决方案2】:

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

        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,因为它更自然。

    【讨论】:

      【解决方案3】:
      Select Case True
      
        Case RadioButton1.Checked
      
        Case RadioButton2.Checked
      
        Case RadioButton3.Checked
      
        Case Else
      
      End Select
      

      【讨论】:

      • 如此简单简直不敢相信我没有想到它.. 玩得很好!
      猜你喜欢
      • 2016-07-03
      • 2011-07-09
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多