使用基于复选框检查的选择语句

时间:2013-03-26 23:55:07

标签: vb.net checkbox visual-studio-2012 radio-button select-case

首先,我想说这是我正在做的家庭作业,但却无法以这种方式工作。所以我必须使用If语句完成作业。目标是构建一个用户可以填写以提交订单的表单。有三个复选框(一个用于汉堡,一个用于薯条,另一个用于饮料)。如果您选中其中一个框,则组框将变为可见,其中包含用于进行所需选择的单选按钮。

我想尝试使用select语句,如果选中了复选框。然后为每个单选按钮使用不同的情况。但是,如果我运行程序并单击我提供的一个按钮,它将填充我的dblCost变量,第一个Case可用。以下是我的代码。我真的想了解我做错了什么,或者这不是解决这个问题的可行方法。以下是我想要使用的代码:

Public Class frmRestaurantOrder

Private Sub CheckedChanged(sender As Object, e As EventArgs) Handles cbxBurgers.CheckedChanged, cbxFries.CheckedChanged, cbxDrinks.CheckedChanged

    If (cbxBurgers.Checked) Then
        gbxBurgers.Visible = True
    Else
        gbxBurgers.Visible = False
    End If

    If (cbxFries.Checked) Then
        gbxFries.Visible = True
    Else
        gbxFries.Visible = False
    End If

    If (cbxDrinks.Checked) Then
        gbxDrinks.Visible = True
    Else
        gbxDrinks.Visible = False
    End If

End Sub

Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click

    Dim dblCost As Double = 0

    Select Case gbxBurgers.Visible = True
        Case rbtRegularBurger.Checked
            dblCost += 4.19
        Case rbtCheeseBurger.Checked
            dblCost += 4.79
        Case rbtBaconBurger.Checked
            dblCost += 4.79
        Case rbtBaconCheeseBurger.Checked
            dblCost += 5.39
        Case Else
            dblCost += 0
    End Select

    Select Case cbxFries.Checked = True
        Case rbtSmallFries.Checked
            dblCost += 1.29
        Case rbtLargeFries.Checked
            dblCost += 1.59
        Case Else
            dblCost += 0
    End Select

    Select Case cbxDrinks.Checked = True
        Case rbtSoda.Checked
            dblCost += 1.69
        Case rbtWater.Checked
            dblCost += 1.49
        Case Else
            dblCost += 0
    End Select

    txtCost.Text = FormatCurrency(dblCost)

End Sub

结束班

2 个答案:

答案 0 :(得分:0)

我认为您对选择案例的理解有点偏差。看看this,看看它是否有帮助。

答案 1 :(得分:0)

虽然它没有专门解决这个问题,但您可能还想考虑一种更短的编写代码的方法:

而不是:

If (cbxBurgers.Checked) Then
    gbxBurgers.Visible = True
Else
    gbxBurgers.Visible = False
End If

你可以写:

gbxBurgers.Visible = cbxBurgers.Checked

这是一件小事,但它使代码更短。