Visual Basic上的变量问题

时间:2012-02-13 15:39:16

标签: vb.net variables

我正在尝试使用单选按钮计算提示并使用它们来选择百分比,但变量“tip”不会转移到下一个sub并且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 个答案:

答案 0 :(得分:1)

原样,你的代码运行正常,但有几件事......

  • 使用每个人都提及的If..ElseIf..EndIF。
  • 尽量不要使用Val(它适用于这种情况,但可能根本不适用)

至于为什么你只得到0,我能够使用你现有的代码复制这种行为,通过以下三个中的一个......

  1. 请勿先点击btnDisplay。在这种情况下,您不指定 值为tip,因此默认为0.将任意数量乘以0 得到...... 0.
  2. TxtBill中没有值。与#1相同的原因。
  3. 没有设置单选按钮的默认值,并尝试 计算
  4. 假设我在txtBill中放了一个值,选择一个tip选项并按下btnDisplay,我得到一个值。

    我会介入并试图跟踪变量中的值以查看发生了什么。您也可以让btnDisplay和btnCalc一次完成所有工作(验证是否已选择了提示量,并进行计算并显示结果)。单击两个按钮没有意义。

答案 1 :(得分:0)

你试过了吗?

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

如何使用ElseIf语句而不是您的case语句:

If rbtnTen.Checked Then
    tip = 0.1
ElseIf rbtnFifteen.Checked Then
    tip = 0.15
ElseIf rbtnTwenty.Checked Then
    tip = 0.2
EndIf

答案 2 :(得分:0)

通常不推荐使用Val()(在i18n代码中尤其是)。它是Visual Basic(pre .Net)的延续,它在解析值时会创建所有类型的时髦数据。建议首先清理字符串然后解析它,即剥离美元符号,然后将值解析为单个/双精度。

有关Val()的更多信息,请查看corresponding MSDN page