0

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

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

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

结束类

4

2 回答 2

0

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

于 2013-03-27T00:09:52.667 回答
0

虽然它没有具体解决这个问题,但您可能还需要考虑一种更短的方法来编写代码:

而不是:

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

你可以写:

gbxBurgers.Visible = cbxBurgers.Checked

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

于 2013-03-27T00:38:24.953 回答