根据选中的单选按钮选择文本

时间:2016-02-16 13:42:12

标签: vb.net

我有一段代码,我正在使用5个单选按钮。 我有一个单选按钮的5个IF语句。 但是一次只能有一个活跃。

如果没有所有if语句,我怎么写呢? 该代码用于使用货币计算器

的结果更新文本框
If RadioAmerica.Checked Then
    Resultbox.AppendText(CurrencyHolder.Text & " Amerikaanse dollars komen overeen met:")
    thevalue = usdvalue
End If

If RadioBritish.Checked Then
    Resultbox.AppendText(CurrencyHolder.Text & " Britseponden komen overeen met:")
    thevalue = gbpvalue
End If

If RadioEuro.Checked Then
    Resultbox.AppendText(CurrencyHolder.Text & " Euro's komen overeen met:")
    thevalue = eurovalue
End If

If RadioRussian.Checked Then
    Resultbox.AppendText(CurrencyHolder.Text & " Russische roebels komen overeen met:")
    thevalue = rusvalue
End If

If RadioJapan.Checked Then
    Resultbox.AppendText(CurrencyHolder.Text & " Japanese Yens komen overeen met:")
    thevalue = japyenvalue
End If

3 个答案:

答案 0 :(得分:1)

代表"组的单选按钮"项目应该在一个容器中组合在一起。 GroupBox控件专门为此目的而设计。如果所有货币单选按钮都不在GroupBox中,请将它们放在那里。

然后,您可以遍历GroupBox中的单选按钮,查看哪一个被选中。这甚至可以通过LINQ简化:

Dim rb As RadioButton = myGroupBox.Controls.OfType(Of RadioButton)
                           .FirstOrDefault(Function(r) r.Checked = True)

但为了使您的情况有效,您必须将相关数据与每个单选按钮相关联。您可以使用Tag属性来执行此操作。将这些字符串添加到每个单选按钮的Tag属性中,然后您可以执行以下操作:

Dim rb As RadioButton = myGroupBox.Controls.OfType(Of RadioButton)
                           .FirstOrDefault(Function(r) r.Checked = True)

Resultbox.AppendText(CurrencyHolder.Text & rb.Tag.ToString())

不幸的是,它并没有扩展。如果您有多个需要与每个单选按钮关联的数据,则必须更加努力地工作。你可以:

  1. 创建一个从内置RadioButton类派生的自定义单选按钮类。在自定义类的内部,提供公开所需信息的属性。然后,使用上面的代码,但将结果转换为自定义单选按钮类类型的对象,并使用它提供的属性。

  2. 简单易用,只需使用If语句即可。没有坏处,它是在代码中做出决策的惯用方式,并且仍然可以非常易读。

答案 1 :(得分:1)

我更喜欢一系列IF的案例陈述..然后或者如果...... ElseIf ....那么......陈述。

在示例中,所有按钮的CheckChanged连接都挂钩到一个Sub:

Private Sub RadioButtonX_CheckedChanged(sender As Object, e As EventArgs) _ 
Handles RadioButton5.CheckedChanged, RadioButton4.CheckedChanged, 
RadioButton3.CheckedChanged, RadioButton2.CheckedChanged, 
RadioButton1.CheckedChanged
    Select Case sender.name
        Case "RadioButton1"
            Label1.Text = sender.name
        Case "RadioButton2"
            Label1.Text = sender.name
        Case "RadioButton3"
            Label1.Text = sender.name
        Case "RadioButton4"
            Label1.Text = sender.name
        Case "RadioButton5"
            Label1.Text = sender.name
    End Select
End Sub

要快速将它们连接在一起,请选择所有控件,然后通过属性添加CheckChanged()事件。

如果在.Tag属性中放置了正确的值,则可以使用相同的子句:

   theValue = Sender.Tag 

请注意,您可以将数据绑定与Tag属性一起使用。

答案 2 :(得分:0)

这是最简单的方法

Select Case True
  Case RadioButton1.Checked
       ' code here
        Resultbox.AppendText(CurrencyHolder.Text & " Amerikaanse dollars komen overeen met:")
        thevalue = usdvalue
  Case RadioButton2.Checked
       ' code here
  Case RadioButton3.Checked
       ' code here
  Case RadioButton4.Checked
       ' code here
  Case RadioButton5.Checked
       ' code here
  Case Else
End Select