2015-10-15 29 views
0

我正在为我的VB课程创建一个比萨订购系统。我能够为比萨编码一个顶部,但是当我尝试添加更多然后添加一个顶部时,我得到带有两个配料的物品,但也有两个只有一个配料的其他比萨饼。如果在组框中选择了一定数量的复选框,是否有办法运行if语句?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 

http://i.stack.imgur.com/VafZe.png

回答

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 
相关问题