Почему я не могу вернуть правильные переменные?

#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, это была проблема. Я удалил эту строку, и она работала отлично.