Vb.net Visual Basic教师示例无法正常工作

Vb.net Visual Basic教师示例无法正常工作,vb.net,Vb.net,刚在课堂上进行了演练,老师给我们的示例代码没有返回值。我目前的任务有很多问题,因为我看不出有什么问题。它应该获取用户输入的两个数字,并将它们相加,得到一个总的税率,但它仍然返回所有0 代码如下所示: Public Class Form1 Private Sub BtnCalc_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnCalc.Click Dim amount1 A

刚在课堂上进行了演练,老师给我们的示例代码没有返回值。我目前的任务有很多问题,因为我看不出有什么问题。它应该获取用户输入的两个数字,并将它们相加,得到一个总的税率,但它仍然返回所有0 代码如下所示:

Public Class Form1

Private Sub BtnCalc_Click(ByVal sender As System.Object, _ 
 ByVal e As System.EventArgs) Handles BtnCalc.Click

    Dim amount1 As Decimal
    Dim amount2 As Decimal
    Dim myinvoice As Invoice

    myinvoice = New Invoice

    myinvoice.setlineitemamount(amount1 = Convert.ToDecimal(TextBoxAmt1.Text))
    myinvoice.setlineitemamount2(amount2 = Convert.ToDecimal(TextBoxAmt2.Text))

    LblTotal.Text = myinvoice.calculateinvoicetotal

    MessageBox.Show(myinvoice.getlineitemamount2)

    amount1 = TextBoxAmt1.Text
    amount2 = TextBoxAmt2.Text

End Sub

End Class
下面是我课堂上的代码:

Public Class Invoice
'created new class for my invoice functions

Private lineItemamount1 As Decimal
Private lineItemamount2 As Decimal
Private lineItemamount3 As Decimal
Private lineItemamount4 As Decimal
Private invoiceDate As Date
Private customer As Integer
Private invoicetotal As Decimal
Private invoicetaxrate As Decimal = 0.1

Public Function getlineitemamount()
    Return lineItemamount1
End Function

Public Sub setlineitemamount(ByVal amount1 As Decimal)
    lineItemamount1 = amount1
End Sub

Public Function getlineitemamount2()
    Return lineItemamount2
End Function

Public Sub setlineitemamount2(ByVal amount2 As Decimal)
    lineItemamount2 = amount2
End Sub

Public Function calculateinvoicetotal()
    Return (lineItemamount1 + lineItemamount2) * invoicetaxrate
End Function

End Class
你能试试这个吗

amount1 = Convert.ToDecimal(TextBoxAmt1.Text)
myinvoice.setlineitemamount(amont1)

当它是一个函数时,您需要指定返回值的类型
但我不确定这是你的问题,但值得一试

这些可能是问题所在:

myinvoice.setlineitemamount(amount1 = Convert.ToDecimal(TextBoxAmt1.Text))
myinvoice.setlineitemamount2(amount2 = Convert.ToDecimal(TextBoxAmt2.Text))
将其改写为:

myinvoice.setlineitemamount(Convert.ToDecimal(TextBoxAmt1.Text))
myinvoice.setlineitemamount2(Convert.ToDecimal(TextBoxAmt2.Text))
原因是(amount1=Convert.ToDecimal(TextBoxAmt1.Text))是一个内嵌比较。它将被解析为真或假


另外,我建议您启用“Option Explicit”

您应该始终将文本框的文本属性指定给变量,然后将变量传递给方法

看看这些视频


使用express版本调试时,TextBoxAmt1.Text是否有价值?我认为调试不会全程显示值,但我使用messagebox来显示它们的值,并且无论我在文本框中输入什么,如果执行messagebox.show(TextBoxAmt1.Text),它们的值始终保持为零当我执行messagebox.show(textboxAmt1.text)而不是messagebox.show(myinvoice.getlineitemamount)时,值是多少它确实会为我输入的内容返回一个值——有没有更好的方法来引用类中的文本框以返回您在txbx中输入的值?进入项目属性并启用“严格”选项,然后修复显示的任何错误。是!成功了!非常感谢你,我真的很感谢你的帮助!Option Strict On要求所有函数、属性和运算符声明都有“As”子句-
myinvoice.setlineitemamount(Convert.ToDecimal(TextBoxAmt1.Text))
myinvoice.setlineitemamount2(Convert.ToDecimal(TextBoxAmt2.Text))