2017-02-12 1 views
0

, поэтому я добавляю элемент в список, щелкнув изображение. Если элемент нажимается или добавляется несколько раз, он дублируется на следующую строку списка. Я хочу, чтобы элемент имел счетчик, который будет подсчитывать количество экземпляров, на которые он был нажат.Как сделать элемент списка, который не дублирует себя в следующую строку списка в C#

вот мой код до сих пор:

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 элемент (этого типа изображения), почему бы просто не удалить событие click после успешного добавления первого экземпляра? – Filburt

ответ

1

Обратите внимание, что вы на самом деле не добавляя item1.Text; вы добавляете 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 отображать объект в качестве определенного формата.

Смежные вопросы