0

私の Windows アプリケーションでは、製品の値を格納するデータベースに価格列があります。

私のwinformには、コンボボックスとリストボックスが1つあります。コンボ ボックスには、データベース内のすべてのアイテムが表示されます。ユーザーがコンボ ボックスから製品を選択して [追加] をクリックすると、これらの製品がリスト ボックスに追加されます。

ユーザーがアイテムの追加をクリックする間に、アイテムの価格を取得し、この値を追加するメソッドに渡します。

しかし、複数の値を追加するにはどうすればよいですか。たとえば、製品 1、製品 2 をコンボ ボックスからリスト ボックスに追加し、これらのアイテムの値を 550+200 = 750 として追加し、テキスト ボックスに表示します。

現在、私はこれをやっています。

価格を取得するには:

public DataSet searchforPrice(string price)
        {
            DataSet dataSet = new DataSet();

            // Create connection object
            OleDbConnection oleConn = new OleDbConnection(connString);
            try
            {
                oleConn.Open();
                string sql = "SELECT [Price]  FROM [Product] WHERE [Product Name] ='" + price + "'";
                OleDbDataAdapter dataAdapter = new OleDbDataAdapter(sql, oleConn);
                dataAdapter.Fill(dataSet, "Product");

            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                oleConn.Close();
            }
            return dataSet;

  }

リストボックスに商品を追加して合計金額を表示する:

private void button2_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(comboBox2.Text);
            maskedTextBox10.Text = addPrice().ToString();

        }

コンボボックスで選択中の商品の価格を加算

public int addPrice()
    {
        DataSet ds = searchforPrice(comboBox2.Text);
        int price =  Convert.ToInt32(ds.Tables[0].Rows[0]["Price"]);
        return price;

    }
4

1 に答える 1

0

メソッドの引数は、ではなくsearchforPrice呼び出す必要があります。productprice

さて、あなたのaddPrice方法は間違っています。なぜなら、それは価格を追加しないからです. コンボで現在選択されているアイテムの価格を返すだけです。おそらく次のようになります。

public int addPrice()
{
    DataSet ds = searchforPrice(comboBox2.Text);
    int sum = Convert.ToInt32(maskedTextBox10.Text);
    int price =  Convert.ToInt32(ds.Tables[0].Rows[0]["Price"]);
    return sum + price;
}

もちろん、アイテムを削除する場合は、同様のことを行う必要があります。

IMO、このロジックを適用するのではなく、各アイテムの価格をリストに保存し、それらの価格の合計をテキスト ボックスに表示する必要があります。アイテムを削除すると、合計を再計算するのが簡単になります (そしてより正確になります)。

于 2013-02-17T06:09:35.777 に答える