Пример Visual Basic Teacher работает неправильно

Только что было пошаговое руководство в классе, и пример кода, который дал нам наш учитель, не возвращает значение. У меня много проблем с моим текущим заданием, потому что я не вижу, что с ним не так. Предполагается, что он берет два числа, введенных пользователем, и складывает их вместе для получения общей суммы с налоговой ставкой, но он по-прежнему возвращает все 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

3 ответа

Решение

Можете ли вы попробовать это плз

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

А также

Public Function getlineitemamount2() as decimal

когда это функция, вам нужно указать ТИП возвращаемого значения, но я не уверен, что это ваша проблема, но стоит попробовать

Эти строки, вероятно, проблема:

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"

Вы должны всегда присваивать текстовое свойство текстового поля переменной, а затем передавать переменную методу.

Посмотрите эти видео

http://www.youtube.com/playlist?list=PL3FEE93A664B3B2E7&feature=plcp

Другие вопросы по тегам