2012-02-20 8 views
0

私はVBの初心者です。クラスの割り当てに少し問題があります。基本的には、請求書の小計を取ることになっています - 割引率を見つけ、実際の合計を出します。私のクラスは、ユーザーの入力のためのテキストボックスにアクセスすることができないと、それはちょうど0を返し続けます。これは宿題でもあります...私は本当に迷っていて、これを理解することができないので、ちょっと答えを求めていません。クラスのテキストボックス入力にアクセスするのに問題があります

これは、ボタンのクリックイベントから私のコードです:

Public Sub btnCalc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalc.Click 
    'If txbxSubtotal.Text >= 500 Then 
    ' discountpercent = 0.2 
    'ElseIf txbxSubtotal.Text >= 250 And txbxSubtotal.Text < 500 Then 
    ' discountpercent = 0.15 
    'ElseIf txbxSubtotal.Text >= 100 And txbxSubtotal.Text < 250 Then 
    ' discountpercent = 0.1 
    'Else 
    ' discountpercent = 0 
    'End If 
    'discountAmount = txbxSubtotal.Text * discountpercent 
    'total = txbxSubtotal.Text - discountAmount 
    Dim myinvoice As New Getinvoice 
    myinvoice.setAmount(total = Convert.ToDecimal(txbxSubtotal.Text)) 
    total = txbxSubtotal.Text 
    MessageBox.Show(myinvoice.getdiscountAmount) 
    MessageBox.Show(myinvoice.getAmount) 
End Sub 
End Class 

、これは私のクラス内のコードです:

Public Class Getinvoice 

    Private subtotal As Decimal 
    Private discount As Decimal 
    Private discountAmount As Decimal 
    Private discountpercent As Decimal 
    Private amount As Decimal 

    Public Sub setAmount(ByVal total As Decimal) 
     amount = total 
    End Sub 

    Public Function getAmount() 
     Return amount 
    End Function 

    Public Sub setdiscountPercent(ByVal discPcnt As Decimal) 
     discountAmount = discPcnt 

     If amount >= 500 Then 
      discountpercent = 0.2 
     ElseIf amount >= 250 And amount < 500 Then 
      discountpercent = 0.15 
     ElseIf amount >= 100 And amount < 250 Then 
      discountpercent = 0.1 
     Else 
      discountpercent = 0 
     End If 
    End Sub 

    Public Function getdiscountAmount() 
     Return discountpercent 
    End Function 

End Class 

答えて

0

あなたがそう

setdiscountPercent(ByVal discPcnt As Decimal) 

と呼ばれることがありませんdiscountpercentは設定されません。だからあなたは0を得る。

EDIT:

Public Sub setdiscountPercent(ByVal discPcnt As Decimal) 
    discountAmount = discPcnt 

    If amount >= 500 Then 
     discountpercent = 0.2 
    ElseIf amount >= 250 And amount < 500 Then 
     discountpercent = 0.15 
    ElseIf amount >= 100 And amount < 250 Then 
     discountpercent = 0.1 
    Else 
     discountpercent = 0 
    End If 
End Sub 

これはあなたのコードです。あなたはこの方法discountAmount = discPcnt

の内側に設定されていますが、コードの中で、あなたがそうdiscountAmountとdiscountpercentが任意の値に設定されることはありませんsetdiscountPercent(ByVal discPcnt As Decimal)

を呼び出すことはありません投稿している時に見てみましょう。そして、これが問題の原因です。

+0

割引率は小計の量によって異なりますが、私はmsgboxをチェックして小計(txbxsubtotal.textから)の入力があったら5000を入力してもそれを返すので本当に混乱します。 0 – Robert

+0

あなたは "discountpercent"と "discountAmount"内に格納されている値を持つことができるようにsetdiscountPercent(ByVal discPcnt Decimal)atleastを呼び出す必要があります – Jordan

+0

私がしようとするプログラムを実行していなくても、 )これは、ユーザーがtxbxsubtotal.textから入力する値です.5000を入力しても0の値を返します。だから、問題はテキストボックスの入力がクラスに渡されていないと思いますか? – Robert

関連する問題