проблемы с переменными на Visual Basic - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь вычислить подсказку с помощью переключателей и использовать их для выбора процента, но переменная «подсказка» не переносится на следующую подпрограмму, а lblTip.text продолжает отображаться как 0

Вот мой код:

Public Class Form1
Dim tip As Double
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
    Me.Close()
End Sub


Private Sub btnDisplay_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnDisplay.Click

    Select Case True
        Case rbtnTen.Checked
            tip = 0.1
        Case rbtnFifteen.Checked
            tip = 0.15
        Case rbtnTwenty.Checked
            tip = 0.2
    End Select

End Sub

Private Sub btnCalcTip_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCalcTip.Click
    lblTip.Text = Val(txtBill.Text) * tip
End Sub
End Class

Ответы [ 3 ]

1 голос
/ 14 февраля 2012

Ваш код работает нормально, но есть пара вещей ...

  • Используйте If..ElseIf..EndIF, о котором все упоминают.
  • Постарайтесь неиспользуйте Val (это работает в этой ситуации, но может не во всех)

Что касается того, почему вы получаете только 0, я смог повторить это поведение, используя ваш существующий код, одним изthreefollowing ...

  1. Не нажимайте сначала btnDisplay.В этом случае вы не присваиваете значение tip, поэтому по умолчанию оно равно 0. Умножьте 0 на любое количество, и вы получите ... 0.
  2. Не имея значения в TxtBill.Причина та же, что и у # 1.
  3. Не задано значение по умолчанию для установленных переключателей, и я пытаюсь вычислить.

Предполагая, что я поместил значение в txtBill, выберите опцию подсказки иНажав btnDisplay, я получаю значение.

Я бы вставил разрывы и попытался отследить значения в ваших переменных, чтобы увидеть, что происходит.Вы также можете, вероятно, заставить btnDisplay и btnCalc выполнять всю работу одновременно (убедитесь, что выбрана сумма чаевых, а также рассчитать и отобразить результаты).Нет смысла нажимать две кнопки.

0 голосов
/ 13 февраля 2012

Использование Val () обычно не рекомендуется (, особенно в коде i18n).Это переход от Visual Basic (до .Net), и он создает все типы фанк-данных при разборе значений.Рекомендуется сначала очистить строку, затем проанализировать ее, то есть удалить знаки доллара, а затем проанализировать значение как одинарное / двойное.

Для получения дополнительной информации о Val () см. соответствующую страницу MSDN * 1006.*.

0 голосов
/ 13 февраля 2012

Пытались ли вы:

lblTip.Text = CStr(CDbl(txtBill.Text) * tip)

Как насчет утверждений ElseIf вместо заявления вашего случая:

If rbtnTen.Checked Then
    tip = 0.1
ElseIf rbtnFifteen.Checked Then
    tip = 0.15
ElseIf rbtnTwenty.Checked Then
    tip = 0.2
EndIf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...