1

私はレジのウィンドウフォーム(下の写真のようになります)を作成しようとしています。これを考えすぎていることはわかっていますが、vbは初めてで、すべてに混乱しています。ただし、バランスを加算および減算する必要があります。ユーザーがすべての値を入力するので、コードに何を入力するかをどのように予測するかなど、ここで計算を行う方法を理解するのに助けが必要です。

これが私がこれまでに持っているものです:

Public Class frmCashRegister

    Dim Total As Decimal
    Dim Subtract As Decimal
    Dim Balance As Decimal


    Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
        txtBalance.Text = FormatCurrency(Val(txtAmount.Text))
    End Sub

    Private Sub txtBalance_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtBalance.TextChanged
        If (txtBalance.Text < 0) Then
            MsgBox("Transaction resulted in negative balance, please try again!")
        End If
    End Sub

    Private Sub txtAmount_KeyPress(sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtAmount.KeyPress
        If Asc(e.KeyChar) <> 8 Then
            If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
                e.Handled = True
            End If
        End If
    End Sub
End Class

ここに画像の説明を入力してください

4

1 に答える 1

0

まず、すべての入力をスクリーニングして、ユーザーがエラーの原因となるものを入力できないことを確認する必要があります。単純なレジの場合は、数字から足し算を差し引いたものと、場合によってはエンターキーが機能することを確認する必要があります。数学に関しては、この場合は現在の合計で変数を保持する必要があります。次に、値を加算および減算するときにこの変数を更新し、残高のTextBoxを値で更新します。これがその方法のアイデアです。

Dim Total As Decimal
Dim Subtract As Decimal
Dim Balance As Decimal


Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
    Balance += Decimal.Parse(txtAmount.Text) 'Same as  Balance = Balance + Decimal.Parse(txtAmount.Text)
    txtBalance.Text = FormatCurrency(Balance)
    txtAmount.Text = ""
End Sub


Private Sub btnSubtract_Click(sender As System.Object, e As System.EventArgs) Handles btnSubtract.Click
    Balance -= Decimal.Parse(txtAmount.Text) 'Same as  Balance = Balance - Decimal.Parse(txtAmount.Text)
    txtBalance.Text = FormatCurrency(Balance)
    txtAmount.Text = ""
End Sub

Private Sub txtAmount_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtAmount.KeyPress
    If Asc(e.KeyChar) <> 8 AndAlso Asc(e.KeyChar) <> &H2E Then
        If Asc(e.KeyChar) = &H2B OrElse Asc(e.KeyChar) = &HD Then
            e.Handled = True
            btnAdd.PerformClick()
        ElseIf Asc(e.KeyChar) = &H2D Then
            e.Handled = True
            btnSubtract.PerformClick()
        ElseIf Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
            e.Handled = True
        End If
    End If
End Sub
于 2012-10-09T04:17:01.800 に答える