如何添加多个复选框值?

时间:2015-10-08 22:08:34

标签: vb.net

我试图满足同时检查多个复选框的所有情况。前四个'如果'语句正在设置每个复选框的值。然后我开始尝试为多个复选框执行Select-Case但它不起作用。只是想知道是否有更有效的方法来做到这一点?感谢。

        If chkCut.Checked = True Then
            serviceRate = 30.0
        End If

        If chkColour.Checked = True Then
            serviceRate = 40.0
        End If

        If chkHighlights.Checked = True Then
            serviceRate = 50.0
        End If

        If chkExtensions.Checked = True Then
            serviceRate = 200.0
        End If

        Dim i As Integer
        Select Case i
            Case chkCut.Checked And chkColour.Checked
                i = baseRate + 70.0
            Case chkCut.Checked And chkHighlights.Checked
                i = baseRate + 80.0
            Case chkCut.Checked And chkExtensions.Checked
                i = baseRate + 230.0

2 个答案:

答案 0 :(得分:1)

您希望获得所选值的总和,因此总结所选值。

serviceRate = 0.0
If chkCut.Checked Then
    serviceRate += 30.0
End If
If chkColour.Checked Then
    serviceRate += 40.0
End If
' Do the same for the other checkboxes
...

表达式serviceRate += 30.0serviceRate = serviceRate + 30.0的简写形式。

如果您有4个复选框,则您有2×2×2×2 = 2 4 = 16种方式检查或不检查它们。 Select Case的一项非常乏味的任务!

顺便说一下:Select...Case Statement根据给定的值选择一个案例。这不是你想要做的。您应该使用If...Then...Else Statement语句。但是,现在已经过时了。

答案 1 :(得分:0)

我的Linq极客会做这样的事情:

子类CheckBox并添加Rate属性:

Public Class RateCheckBox
    Inherits CheckBox

    Private _Rate As Decimal
    Public Property Rate() As Decimal
        Get
            Return _Rate
        End Get
        Set(ByVal value As Decimal)
            _Rate = value
        End Set
    End Property

End Class

然后在表单中,我有一个按钮点击处理程序和辅助函数,如下所示:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Rate As Decimal = CalcRate()
        Label1.Text = Rate.ToString()
    End Sub

    Private Function CalcRate() As Decimal
        Return Me.Controls.OfType(Of RateCheckBox).Where(Function(c) c.Checked).Sum(Function(c) c.Rate)
    End Function
End Class

现在,当您创建表单时,可以使用自己的RateCheckBox类而不是常规CheckBox,并且在设计器的属性窗口中,您可以设置与每个复选框。

我喜欢这种方法的是它的可扩展性,这意味着无论您向表单添加多少个复选框,它都将始终计算出正确的数量,而无需更改计算功能。

干杯