我有一段代码,我正在使用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
答案 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())
不幸的是,它并没有扩展。如果您有多个需要与每个单选按钮关联的数据,则必须更加努力地工作。你可以:
创建一个从内置RadioButton
类派生的自定义单选按钮类。在自定义类的内部,提供公开所需信息的属性。然后,使用上面的代码,但将结果转换为自定义单选按钮类类型的对象,并使用它提供的属性。
简单易用,只需使用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