如何使列表框项不会复制到C#中列表框的下一行

时间:2017-02-12 22:08:14

标签: c# winforms listbox

所以我通过点击图片在列表框中添加项目。 如果项目被单击或多次添加,它会将自身复制到列表框的下一行。我想要的是具有计数器的项目,该计数器将计算它被点击的实例数。

到目前为止,这是我的代码:

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++;
            }

        } 

2 个答案:

答案 0 :(得分:1)

请注意,您实际上并未添加item1.Text;您正在添加item1.Text + ctr。这就是为什么您的if条款不会阻止您添加重复项的原因。

答案 1 :(得分:0)

使用此代码:

span

其中ItemWrapper是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 }); } 对象的包装器,并且覆盖item方法允许ToString()将对象显示为您定义的格式。