#vb.net #return
#vb.net #Возврат
Вопрос:
У меня возникли проблемы с возвратом правильного значения для промежуточного итога в моем приложении. Пользователь выбирает тип тура, который он хочет, и вводит количество приобретаемых билетов. После нажатия кнопки Рассчитать стоимость отображаются промежуточный итог, сумма налога и итоговый итог.
Мой код для методов промежуточного итога и btnCost_Click приведен ниже:
Private Sub btnCost_Click(sender As Object, e As EventArgs) Handles btnCost.Click
Dim intTicketQuantity As Integer
Dim blnNumberOfTicketsIsValid As Boolean = False
Dim blnCheckForRad As Boolean = False
Dim decSubTotal As Decimal
Dim decTotalTax As Decimal
Dim intTourType As Integer
blnNumberOfTicketsIsValid = ValidateNumberOfTickets()
If (blnNumberOfTicketsIsValid) Then
intTicketQuantity = Convert.ToInt32(txtTickets.Text)
intTicketQuantity = cboTourType.SelectedIndex
If (intTicketQuantity > 0) Then
intTourType = cboTourType.SelectedIndex
End If
Select Case intTourType
Case 0
decSubTotal = Story(intTourType, intTicketQuantity)
decTotalTax = Tax(decSubTotal)
Case 1
decSubTotal = Battleground(intTourType, intTicketQuantity)
decTotalTax = Tax(decSubTotal)
Case 2
decSubTotal = Mission(intTourType, intTicketQuantity)
decTotalTax = Tax(decSubTotal)
End Select
ShowAll(decSubTotal, decTotalTax)
End If
End Sub
Private Function Story(ByVal intTourType As Integer, intTicketQuantity As Integer) As Decimal
Dim decSubTotal As Decimal = 0D
If (radWeekday.Checked = True) Then
decSubTotal = 19D * intTicketQuantity * (1 - _decDiscount)
ElseIf (radWeekend.Checked = True) Then
decSubTotal = 19D * intTicketQuantity
End If
Return decSubTotal
End Function
Private Function Battleground(ByVal intTourType As Integer, intTicketQuantity As Integer) As Decimal
Dim decSubTotal As Decimal = 0D
If (radWeekday.Checked = True) Then
decSubTotal = 29D * intTicketQuantity * (1 - _decDiscount)
ElseIf (radWeekend.Checked = True) Then
decSubTotal = 29D * intTicketQuantity
End If
Return decSubTotal
End Function
Private Function Mission(ByVal intTourType As Integer, intTicketQuantity As Integer) As Decimal
Dim decSubTotal As Decimal = 0D
If (radWeekday.Checked = True) Then
decSubTotal = 49D * intTicketQuantity * (1 - _decDiscount)
ElseIf (radWeekend.Checked = True) Then
decSubTotal = 49D * intTicketQuantity
End If
Return decSubTotal
End Function
Комментарии:
1.
intTicketQuantity = Convert.ToInt32(txtTickets.Text)
intTicketQuantity = cboTourType.SelectedIndex
Почему вы присваиваете этой переменной дважды разные значения, прямо рядом друг с другом?2. Какой результат вы ожидаете, и чем фактический результат отличается от ожидаемого результата? Не у всех, кто хотел бы вам помочь, есть время, чтобы открыть новую VB.NET проектируйте, создавайте соответствующие элементы пользовательского интерфейса, копируйте и вставляйте свой код, чтобы определить цель.
3. Избавиться от
intTicketQuantity = cboTourType.SelectedIndex
4. Спасибо, topshot, это была проблема. Я удалил эту строку, и она работала отлично.