我正在为我的VB课程创建一个比萨饼订购系统。我可以为比萨饼编码一个顶部,但是当我尝试添加更多然后一个顶部时,我得到了带有两个浇头的物品,还有另外两个只有一个浇头的比萨饼。如果在组框中只选择了一定数量的复选框,是否有办法运行if语句?
Private Sub AddItems()
'Declare Topping Variables
Dim topping1 As String = "Pepperoni"
Dim topping2 As String = "Bacon"
Dim topping3 As String = "Ham"
'Declare Size Variables
Dim strPersonal As String = "Persoanl"
Dim strSmall As String = "Small"
Dim strMedium As String = "Medium"
Dim strLarge As String = "Large"
Dim strExLarge As String = "Extra Large"
'Personal Single Item
If radPersonal.Checked = True And chkPepperoni.Checked = True Then
CheckedListBox1.Items.Add(strPersonal & " with " & topping1)
End If
If radPersonal.Checked = True And chkBacon.Checked = True Then
CheckedListBox1.Items.Add(strPersonal & " with " & topping2)
End If
If radPersonal.Checked = True And chkHam.Checked = True Then
CheckedListBox1.Items.Add(strPersonal & " with " & topping3)
End If
'Personal Two Items
If radPersonal.Checked = True And chkPepperoni.Checked = True And chkBacon.Checked = True Then
CheckedListBox1.Items.Add(strPersonal & " with " & topping1 & " and " & topping2)
End If
If radPersonal.Checked = True And chkBacon.Checked = True And chkHam.Checked = True Then
CheckedListBox1.Items.Add(strPersonal & " with " & topping2 & " and " & topping3)
End If
If radPersonal.Checked = True And chkHam.Checked = True And chkPepperoni.Checked = True Then
CheckedListBox1.Items.Add(strPersonal & " with " & topping3 & " and " & topping1)
End If
End Sub
答案 0 :(得分:0)
首先,您不应该六次测试radPersonal.Checked
。你应该只测试一次然后嵌套其余部分。
其次,您不应该首先单独测试chkPepperoni.Checked
,然后再组合测试。如果你这样做,如果它被组合检查,它将匹配两个测试。您应首先测试组合,然后仅在组合不匹配时单独测试。这就是我倾向于这样做的方式:
If radPersonal.Checked Then
If chkPepperoni.Checked Then
If chkBacon.Checked Then
'pepperoni and bacon
ElseIf chkHam.Checked Then
'pepperoni and ham
Else
'pepperoni only
End If
ElseIf chkBacon.Checked Then
If chkHam.Checked Then
'bacon and ham
Else
'bacon only
End If
ElseIf chkHam.Checked Then
'ham only
End If
End If