1

私はC#のWindowsフォームを使用しています。リストビューにリンクされた複数のボタンがあり、ボタンを押すと新しいアイテムがリストビューに追加されます。リストビューの列ヘッダーは「名前」と「金額」です。別のボタンが押されると、別のアイテムがリストビューに追加されます。私が助けを必要としているのは次のとおりです。同じボタンを 2 回押したときに、2 回目のクリックで金額が「1」から「2」になるようにします。そのため、商品名は重複していませんが、金額が増えています。問題は、現時点でボタンをリンクリストにリンクするためにテキストを使用していることです。たとえば、("Coca Cola", "1") は、アイテム名を coca cola として追加し、金額を 1 として追加します。整数なので助けてください!!

ありがとう

4

2 に答える 2

1
var amount = new Dictionary<string, int>();

Button1_Click()
{
    if(amount["Coca Cola"]<=0)
    {
        add a listview items with amount 0
    }
    // find the listitem with the value "Coca Cola" using FindItemWithText() Method
    // set the value of ++amount["Coca Cola"] to that listitem in the amount field
}

マップを手元に用意しておくと、他のシナリオでリストビューのアイテムを読んで読む必要がなくなります。

于 2010-05-20T08:37:51.640 に答える
1

ユーザーがボタンを押すと、新しい行を追加する前に、現在のすべての ListViewItems をループして、それらのいずれかが既に同じ名前を持っているかどうかを確認し、同じ名前の場合は金額列を増やします。それ以外の場合は、現在行っているように行を追加します。

bool found = false;
foreach (ListViewItem item in listView1.Items)
{
     if (item.Text.Equals("Coke"))
     {
          int amt = int.Parse(item.SubItems[1].Text);
          amt++;
          item.SubItems[1].Text = amt.ToString();
          found = true;
     }
}
if (!found)
{
     ListViewItem item = listView1.Items.Add("Coke");
     item.SubItems.Add("1");
}
于 2010-05-20T08:28:34.927 に答える