Hiim对vb相当新,所以我希望我解释一下这个, 我的问题是我正在创建一个影院预订系统,我似乎无法通过提交按钮打开下一个表单而没有组合框做同样的事情。 我有四个组合框和一个提交按钮都链接到同一事件。这样用户就可以选择票数,总票数会自动显示在总标签中,当按下提交按钮时,新的表格会出现Form3 ......
我需要至少选择一个组合框,否则会出现错误“请至少选择一个选票”,如果在按下提交按钮时至少选择了一个,则下一个表格应该出现了,但是当我选择了一个下拉框的代码时,它会打开一个新表格,我知道我的问题..但我不知道如何得到我想要的。
我的代码如下:
Sub ComboBoxes_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged, ComboBox3.SelectedIndexChanged, ComboBox4.SelectedIndexChanged, Submitbtn.Click
'Assigned an evet handler to all of the comboboxes then calculates the price and puts in total box
Dim Totalcombo1, Totalcombo2, Totalcombo3, Totalcombo4, Price As Decimal
Dim valuecombo1 = (ComboBox1.SelectedIndex + 1) 'finds position of option selected & adds one to get number of tickets
Dim valuecombo2 = (ComboBox2.SelectedIndex + 1)
Dim valuecombo3 = (ComboBox3.SelectedIndex + 1)
Dim valuecombo4 = (ComboBox4.SelectedIndex + 1)
'if the submit button is selected without there being a value selected from any combobox then error should appear, saying at least 1 ticket should be purchased.
If (ComboBox2.SelectedIndex = -1) Then
Totalcombo2 = 0
Else
Price = 6.5
Totalcombo2 = valuecombo2 * Price
End If
'determines the ticketprice of combobox 1
If (ComboBox1.SelectedIndex = -1) Then
Totalcombo1 = 0
Else
Price = 9
Totalcombo1 = valuecombo1 * Price
End If
'determines the ticketprice of combobox 2
If (ComboBox3.SelectedIndex = -1) Then
Totalcombo3 = 0
Else
Price = 6.5
Totalcombo3 = valuecombo3 * Price
End If
'determines the ticketprice of combobox 3
If (ComboBox4.SelectedIndex = -1) Then
Totalcombo4 = 0
Else
Price = 6.5
Totalcombo4 = valuecombo4 * Price
End If
'determines the ticketprice of combobox 4
Try
If (ComboBox1.SelectedIndex And ComboBox2.SelectedIndex And ComboBox3.SelectedIndex And ComboBox4.SelectedIndex) = -1 Then
Throw New System.Exception()
End If
Catch ex As Exception When (ComboBox1.SelectedIndex And ComboBox2.SelectedIndex And ComboBox3.SelectedIndex And ComboBox4.SelectedIndex) = -1
MessageBox.Show("Please make at least one ticket selection before continuing. ")
End Try
Totallbl.Text = Totalcombo1 + Totalcombo2 + Totalcombo3 + Totalcombo4
'adds the totals of the ticketprices and then inserts into the Total label
End Sub
Sub SubmitForm_OpenBooking()
Dim FrmBooking As New Form3
FrmBooking.Show()
Me.Hide()
End Sub
任何帮助,这将是一个很大的帮助..静止了几个小时。
答案 0 :(得分:1)
是否缺少某些代码?我看不到对SubmitForm_OpenBooking的调用。
无论如何,你需要分开你的逻辑。
答案 1 :(得分:0)
这部分代码存在问题:
If (ComboBox1.SelectedIndex And ComboBox2.SelectedIndex And ComboBox3.SelectedIndex And ComboBox4.SelectedIndex) = -1 Then
使用And以这种方式不会给出您可能期望的结果。它对SelectedIndexValues执行按位和运算。如果要检查所有选定索引的值是否为-1,则应执行以下操作:
If ComboBox1.SelectedIndex = -1 And ComboBox2.SelectedIndex = -1 And ComboBox3.SelectedIndex = -1 And ComboBox4.SelectedIndex = -1 Then
使用AndAlso而不是And。
也是一个好主意此外,没有理由在代码中使用Try-Catch子句。只需在If语句中显示消息框。