Пример 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