2010-05-20 34 views
0

我正在使用c#窗體。我有多個按鈕鏈接到一個列表視圖,當一個按鈕被按下時,一個新的項目被添加到列表視圖。列表視圖中的列標題是「名稱」和「金額」。當按下不同的按鈕時,不同的項目被添加到列表視圖。我需要幫助的東西如下: 當同樣的按鈕被按下兩次時,我希望第二次點擊從「1」到「2」的金額。所以項目名稱不重複,但金額增加。問題是,我正在使用文本將按鈕鏈接到鏈接列表,例如, (「可口可樂」,「1」),其中項目名稱爲可口可樂,金額爲1.我知道這是與整數有關,所以請幫助!c#窗體鏈接按鈕到列表視圖

感謝

回答

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"); 
} 
+0

謝謝你,這工作完美。我有一個printitems方法,它鏈接到在單獨的類中創建的列表。如何將項目添加到金額列?代碼如下: private void printItems(Items items) { ListViewItem item = new ListViewItem(); item.Text = items.ItemName; item.SubItems.Add(items.AmountOfItem); listView1.Items.Add(item); } – Richard 2010-05-20 09:22:57

+0

不真正理解你的問題,所以你的意思是你想要在ListView中的每個項目中存儲PrintItems的實際列表? 如果是這樣,只需要執行像item.Tag = items;其中item是剛剛創建的ListViewItem。或者,如果您想將其存儲在金額列中,那麼當您創建金額子項時,只需將其添加到其標記中,如「item.SubItems.Add(items.AmountOfItem).Tag = items;'。 – 2010-05-20 09:42:21

+0

@Richard;由ho *給出的代碼是您的新printItems方法 - 除了您需要用您自己的(項目)值替換硬編碼的「可樂」。 – riffnl 2010-05-20 11:15:06

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 
} 

手頭有一張地圖將避免通讀在其它場景列表視圖項閱讀。

+0

出於真正的興趣,您爲什麼在該示例中使用類型推斷? – 2010-05-20 11:43:54

+0

@馬丁米蘭:爲什麼我不應該? – Amsakanna 2010-05-24 08:55:58

+0

沒有真正的理由,你不能 - 但我想知道你爲什麼DID ... – 2010-05-24 11:05:10