Reputation: 35
Hiim fairly new to vb so i hope i explain this right, the problem I have is that im creating a theatre booking system and i can't seem to get the Submit button to open the next form without the combo boxes doing the same thing. I have four combo boxes and a submit button all linked to the same event. This is so the user can select the number of tickets, the total will display automatically in the total label and when the submit button is pressed a new form, Form3 will appear...
I need at least one of the combo boxes has to be selected or an error will appear saying "please make at lease one ticket selection", then if at least one has been selected when the submit button is pressed the next form should appear, but with the code i have when a drop down box is selected it opens a new form, I know my problem.. but i dont know how to get what i want.
My code is below:
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
Any help what so ever, wld be a great help.. iv been at this for hours.
Upvotes: 0
Views: 127
Reputation: 126
Is there some code missing? I couldn't see the call to SubmitForm_OpenBooking.
Regardless, you need to separate your logic.
Upvotes: 1
Reputation: 17845
This part of your code is problematic:
If (ComboBox1.SelectedIndex And ComboBox2.SelectedIndex And ComboBox3.SelectedIndex And ComboBox4.SelectedIndex) = -1 Then
Using And in this manner doesn't give the result you probably expect. It performs a bitwise And operation on the SelectedIndexValues. If you want to check if all selected indexes have a value of -1, you should do it like this:
If ComboBox1.SelectedIndex = -1 And ComboBox2.SelectedIndex = -1 And ComboBox3.SelectedIndex = -1 And ComboBox4.SelectedIndex = -1 Then
It would also be a good idea to use AndAlso instead of And.
Also, there's no reason to use a Try-Catch clause in your code. Just show the message box inside the If statement.
Upvotes: 0