0
        Dim index As Integer
        Dim choice As String
        Dim total As Integer

        total = 0

        index = NumericUpDown1.Value


        Dim arr(4) As Integer
        arr(0) = 10
        arr(1) = 5
        arr(2) = 21
        arr(3) = 33




        If index > 0 Then
            choice = (Combobox1.SelectedItem.ToString + " x " + NumericUpDown1.Value.ToString)
            ListBox1.Items.Add(choice)
            CheckedListBox1.Items.Add(choice)
            total += arr(Combobox1.SelectedIndex) * index
            TotalLabel.Text = total.ToString()


      Else
            MsgBox("error.")

        End If

単一選択の合計は計算できますが、累積して合計することはできません。コードの何が問題になっていますか?

現在の状況: ステップ 1: arr(0) を選択、インデックス = 2 合計 = 20

ステップ 2: arr(2) を選択、インデックス = 1 合計 = 21

正しい状況: ステップ 1: arr(0) を選択、インデックス = 2 合計 = 20

ステップ 2: arr(2) を選択、インデックス = 1 合計 = 41

4

1 に答える 1

0

グローバル変数またはパブリック変数を持つクラスが必要です。Transactionトランザクションに関するデータを格納するクラスと、おそらく製品に関するデータを格納するクラスを作成する必要がありProductます。何を入れるかはあなた次第ですが、私は次のようなものから始めます。

Public Class Transaction
    Private _productsList As List(of Product)
    Private _transationNumber As Integer
    '...more stuff...

    'you'll want to remember what products are in your "cart" for the transaction
    Public Property ProductsList As List(of Product)
        'your get/set accessors
    End Property
    Public Property TransactionNumber As Integer
        'your get/set accessors
    End Property
    Public Property TotalTransactionCost() As Double
        Get 
            'this will sum of the prices of all of the products you have stored in your 
            'list of products for this transaction
            Return _productsList.Sum(product => product.Price)
        End Get
    End Property

    Public Sub New()
        '...constructor stuff
    End Sub
    Public Sub AddProductToTransaction(byval product)
        _productsList.Add(product)
    End Sub

End Class

Public Class Product
    Private _price As Double
    Private _productName As String
    Private _UPC As String

    Public Property Price() As Double
        'your get/set accessors
    End Property
    Public Property ProductName() As String
        'your get/set accessors
    End Property
    Public UPC As String () As String
        'your get/set accessors
    End Property

    Public Sub New()
       'constructor stuff
    End Sub
End Class

これらは、開始するためのいくつかのクラス シェルです。製品を作ることに真剣に取り組んでいるなら、これは正しい方向への一歩です。コードを書く場合は、正しい方法で記述してください。

手っ取り早く汚い解決策を探しているだけなら、グローバル変数を宣言して、実行中の合計を保持することができます。新しいトランザクションを開始する前に、忘れずにクリアしてください。

あなたは次のようなことをしたいと思うでしょう:

Private TransactionCost As Doubleすべてのメソッドの外側のフォームで。

繰り返しますが、最初の方法をお勧めします。少なくともこれら 2 つのクラスが必要であり、実際の製品では確実により具体化されます。

これがあなたの質問に役立ち、答えてくれることを願っています。もしそうなら、賛成票を投じて答えを受け入れてください。SOへようこそ。

于 2012-10-27T08:41:16.090 に答える