Vb.net 执行简单的算术运算并使用标签显示答案

Vb.net 执行简单的算术运算并使用标签显示答案,vb.net,Vb.net,假设我在文本框和标签中有以下内容: txtAmount1_1 txtAmount1_2 txtAmount1_3 txtAmount2_1 txtAmount2_2 txtAmount2_3 lblTotal1 lblTotal2 lblGrandTotal 我想显示txtAmount1_1、txtAmount1_2和txtAmount1_3到lblTotal1的总和,以及txtAmount2_1、txtAmount2_2和txtAmount2_3到lblTotal2的

假设我在文本框和标签中有以下内容:

 txtAmount1_1
 txtAmount1_2
 txtAmount1_3

 txtAmount2_1
 txtAmount2_2
 txtAmount2_3

 lblTotal1
 lblTotal2

 lblGrandTotal
我想显示txtAmount1_1、txtAmount1_2和txtAmount1_3到lblTotal1的总和,以及txtAmount2_1、txtAmount2_2和txtAmount2_3到lblTotal2的总和,以及lblTotal1和lblTotal2到lblgrandtall的总和。因此,我输入了以下代码:

  Private Sub txtAmount1_1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount1_1.TextChanged
    Dim a As Decimal

    a = Val(txtAmount1_1.Text) + Val(txtAmount1_2.Text) + Val(txtAmount1_3.Text)
    lblTotal1.Text = Val(a)
End Sub

 Private Sub txtAmount1_2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount1_2.TextChanged
    Dim a As Decimal

    a = Val(txtAmount1_1.Text) + Val(txtAmount1_2.Text) + Val(txtAmount1_3.Text)
    lblTotal1.Text = Val(a)
End Sub

 Private Sub txtAmount1_3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount1_3.TextChanged
    Dim a As Decimal

    a = Val(txtAmount1_1.Text) + Val(txtAmount1_2.Text) + Val(txtAmount1_3.Text)
    lblTotal1.Text = Val(a)
End Sub

 Private Sub txtAmount2_1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount2_1.TextChanged
    Dim a As Decimal

    a = Val(txtAmount2_1.Text) + Val(txtAmount2_2.Text) + Val(txtAmount2_3.Text)
    lblTotal1.Text = Val(a)
End Sub

 Private Sub txtAmount2_2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount2_2.TextChanged
    Dim a As Decimal

    a = Val(txtAmount2_1.Text) + Val(txtAmount2_2.Text) + Val(txtAmount2_3.Text)
    lblTotal1.Text = Val(a)
End Sub

 Private Sub txtAmount2_3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount2_3.TextChanged
    Dim a As Decimal

    a = Val(txtAmount2_1.Text) + Val(txtAmount2_2.Text) + Val(txtAmount2_3.Text)
    lblTotal1.Text = Val(a)
End Sub

 Private Sub lblTotal1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTotal1.Click
    Dim a As Decimal
    Dim b As Decimal

    a = Val(txtAmount1_1.Text) + Val(txtAmount1_2.Text) + Val(txtAmount1_3.Text)
    lblTotal1.Text = Val(a)

    b = Val(lblTotal1.Text) + Val(lblTotal2.Text)
    lblGrandTotal.Text = Val(b)
End Sub

 Private Sub lblTotal2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTotal2.Click
    Dim a As Decimal
    Dim b As Decimal

    a = Val(txtAmount2_1.Text) + Val(txtAmount2_2.Text) + Val(txtAmount2_3.Text)
    lblTotal1.Text = Val(a)

    b = Val(lblTotal1.Text) + Val(lblTotal2.Text)
    lblGrandTotal.Text = Val(b)
End Sub

Private Sub lblGrandTotal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblGrandTotal.Click
    Dim a As Decimal

    a = Val(lblTotal1.Text) + Val(lblTotal2.Text)
    lblGrandTotal.Text = Val(a)
End Sub

lblTotal1和lblTotal2工作正常(我的意思是它正确显示文本框中的值之和),但lblGrandTotal不工作(不显示lblTotal1和lblTotal2之和)。为什么会这样?我的密码有问题吗?那在哪里呢?我已经发现我的错误了。这是一个印刷错误(不是
Val(txtAmount1\u 1.Text)
,我只是键入了
Val(txtAmount1\u 1)
)。现在很好用。我确实使用了Val,因为不使用它会给我的代码带来错误。

我认为你的程序有点混乱,我看不出你想要的概念,但我尝试修改你的一些程序,或者我认为这是你想要的

Private Sub txtAmount1_1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount1_1.TextChanged
    Dim a As Decimal

    a = Val(txtAmount1_1.Text) + Val(txtAmount1_2.Text) + Val(txtAmount1_3.Text)
    lblTotal1.Text = Val(a)
End Sub

Private Sub txtAmount1_2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount1_2.TextChanged
    Dim a As Decimal

    a = Val(txtAmount1_1.Text) + Val(txtAmount1_2.Text) + Val(txtAmount1_3.Text)
    lblTotal1.Text = Val(a)
End Sub

Private Sub txtAmount1_3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount1_3.TextChanged
    Dim a As Decimal

    a = Val(txtAmount1_1.Text) + Val(txtAmount1_2.Text) + Val(txtAmount1_3.Text)
    lblTotal1.Text = Val(a)
End Sub

Private Sub txtAmount2_1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount2_1.TextChanged
    Dim a As Decimal

    a = Val(txtAmount2_1.Text) + Val(txtAmount2_2.Text) + Val(txtAmount2_3.Text)
    lblTotal2.Text = Val(a)
End Sub

Private Sub txtAmount2_2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount2_2.TextChanged
    Dim a As Decimal

    a = Val(txtAmount2_1.Text) + Val(txtAmount2_2.Text) + Val(txtAmount2_3.Text)
    lblTotal2.Text = Val(a)
End Sub

Private Sub txtAmount2_3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtAmount2_3.TextChanged
    Dim a As Decimal

    a = Val(txtAmount2_1.Text) + Val(txtAmount2_2.Text) + Val(txtAmount2_3.Text)
    lblTotal2.Text = Val(a)
End Sub

Private Sub lblTotal1_TextChange(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTotal1.TextChanged
    Dim a As Decimal
    Dim b As Decimal

    a = Val(txtAmount1_1.Text) + Val(txtAmount1_2.Text) + Val(txtAmount1_3.Text)
    lblTotal1.Text = Val(a)

    b = Val(lblTotal1.Text) + Val(lblTotal2.Text)
    lblGrandTotal.Text = Val(b)
End Sub

Private Sub lblTotal2_TextChange(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblTotal2.TextChanged
    Dim a As Decimal
    Dim b As Decimal

    a = Val(txtAmount2_1.Text) + Val(txtAmount2_2.Text) + Val(txtAmount2_3.Text)
    lblTotal1.Text = Val(a)

    b = Val(lblTotal1.Text) + Val(lblTotal2.Text)
    lblGrandTotal.Text = Val(b)
End Sub


我注意到lblTotal2是常量或不变。我认为这与lblTotal1的概念相同,因此我将其更改为添加txtAmount2_1、txtAmount2_2、txtAmount2_3,然后我将标签上的click事件更改为Text change,因为事件仅在单击标签时触发,我知道您想要的是自动显示所有文本框的总和,并显示两个lblTotal1和lblTotal2的最终总和…

您正在对TextChanged事件中的textAmount1_1、textAmount1_2、textAmount1_3的值进行相加,但是,您正在单击时添加lblTotal1和lblTotal2,因此,事件将在单击时触发。当你在两个标签上都有值时,它会在单击时添加值尝试单击lblTotal1或lblTotal2。不要使用
val
并开始接受人们提供给你的答案当我单击标签时,发生了一个错误<代码>参数“Expression”无法转换为类型“Label”。当我尝试将_Click事件更改为_TextChanged事件时,它会显示另一个错误<代码>创建表单时出错。有关详细信息,请参见Exception.InnerException。错误是:参数“Expression”无法转换为“Label”类型。@puropoix这样说是因为您不知道我尝试了多少个答案,结果都失败了。这就是为什么我问,因为我是一个初学者,还不熟悉vb的一切。如果给我的答案无效?当然,在我明白自己做错了什么之前,我必须再次寻找其他答案。你从我之前的问题中得到了很大帮助。为此,非常感谢。我这么说是因为你已经问了6个问题,得到了8个答案,并且没有点击任何一个的复选标记。谢谢你的回答,但我发现我只是打错了一些文本框名称,这就是为什么它不能汇总的原因!我真傻。我还更改了_clickto _TextChanged,现在它工作正常:)请使用问题的编辑链接添加其他信息。“发布答案”按钮只能用于问题的完整答案。@xlembouras:这是问题的答案,尽管它很简单。