2017-02-12 21 views
0

画像をクリックしてリストボックスに項目を追加します。 アイテムがクリックまたは複数回追加された場合、アイテムはリストボックスの次の行に複製されます。私が望むのは、アイテムがクリックされたインスタンスの数をカウントするカウンタを持つことです。リストボックスの項目をCのリストボックスの次の行に複製しないようにするには

はここに、これまでに私のコードです:あなたが実際にitem1.Textを追加していない

int ctr = 1; 
private void item_img1_Click(object sender, EventArgs e) 
     { 

      if (!orderList.Items.Contains(item1.Text)) 
      { 
       orderList.Items.Add(item1.Text + ctr); 
       ctr++; 
      } 

     } 
+0

(この画像タイプの)正確に1つのアイテムを追加したい場合は、最初のインスタンスを正常に追加した後に単にクリックイベントを削除しないでください。 – Filburt

答えて

1

注意。 item1.Text + ctrを追加しています。だからあなたのif句は重複を追加しないようにしています。

0

使用このコード:

class ItemWrapper 
{ 
    public object item; 
    public string text; 
    public int ctr = 1; 
    public override string ToString() 
    { 
     return text + " (" + ctr + ")"; 
    } 
} 

private void item_img1_Click(object sender, EventArgs e) 
{ 
    bool found = false; 
    foreach (var itm in orderList.Items) 
     if ((itm as ItemWrapper).text == item1.Text) 
     { 
      (itm as ItemWrapper).ctr++; 
      found = true; 
      break; 
     } 
    if (!found) 
     orderList.Items.Add(new ItemWrapper() { item = item1, text = item1.Text, ctr = 1 }); 
} 

ItemWrapperはそれであなたのitem対象とオーバーライドToString()方法のラッパーですlistBoxあなたの定義された形式のようなオブジェクトを表示することができます。

関連する問題