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 

末级

+0

我不知道我明白你为什么要测试第一种情况的可见性,其余的为检查。了解正在进行的最佳方式是调试。你知道怎么做吗? – 2013-03-27 00:20:10

回答

0

我觉得你的选择案件的理解是有点过。看看this,看看它是否有帮助。

+0

我认为这是一个完美的视角。非常感谢你! – 2013-03-27 00:26:31

0

虽然没有具体解决的问题,您可能还需要考虑一个较短的方式来编写代码:

不是:

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

你可以写:

gbxBurgers.Visible = cbxBurgers.Checked 

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