2012-02-21 94 views
2

刚刚在课堂上进行了演练,我们的老师给出的示例代码没有返回值。我目前的任务有很多麻烦,因为我没有看到它有什么问题。它应该采取由用户输入两个数字,并一起加入他们与税率一共有,但它仍然返回全0 继承人什么代码如下:Visual Basic老师示例无法正常工作

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 
+0

不TextBoxAmt1.Text值得的东西,当你使用调试Express版本我不认为整个调试显示值 – Marc 2012-02-21 00:42:38

+0

IM,但我用消息框来展示一下他们的价值观是,无论我进入文本框他们的价值始终保持为零 – Robert 2012-02-21 00:44:30

+0

如果你做一个messagebox.show(TextBoxAmt1.Text)什么值 – Marc 2012-02-21 00:47:48

回答

2

你可以试试这个PLZ

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

而且

Public Function getlineitemamount2() as decimal 

当您需要指定返回值 的类型的函数,但我不知道这是你的问题,但它实在值得一试

+0

并根据需要重复。 :) – 2012-02-21 00:58:28

+0

是的!有效!非常感谢你,我非常感谢你的帮助! – Robert 2012-02-21 00:59:08

+0

“Option Strict On要求所有函数,属性和运算符声明具有'As'子句” - https://msdn.microsoft.com/en-us/library/44h6ck64%28v=vs.90%29.aspx ?f = 255&MSPPError = -2147217396 – 2015-11-12 14:14:21

0

这些线是可能的问题:

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))是一种在线比较。这将是解决为真或假...

另外,我建议你打开“选项显式”

+1

和Option Strict – 2012-02-21 14:30:06