列表视图中的搜索项c#

时间:2013-11-22 07:42:53

标签: c#

我尝试在列表视图中添加项目。 但是这段代码根本不起作用。 我哪里做错了?

btn.Click += (senders, eventArgs) =>
{
    foreach (ListViewItem lvis in lvSales.Items)
    {
        if (lvis.SubItems[0].Text == btn.Text)
        {
            MessageBox.Show("!!!!!!!");
        }
        else
        {
            lvis.Text = count.ToString();
            lvis.SubItems.Add(btn.Text);
            lvis.SubItems.Add(btn.Name);
            lvis.SubItems.Add(count.ToString());
            lvis.SubItems.Add(btn.Tag.ToString()); // Email  
            lvSales.Items.Add(lvis);
            count++;
        }
    }
};

我要将项目添加到列表视图。 如果已添加项目,则会添加数量 否则它会增加新的。 顺便说一句,当我点击按钮时没有任何事情发生。

3 个答案:

答案 0 :(得分:1)

您无法将项目添加到使用foreach(lvSales.Items)迭代的集合中。考虑将foreach改为其他循环,例如'for(...'

答案 1 :(得分:0)

btn.Click += (senders, eventArgs) =>
                {
                    foreach (ListViewItem lvis in lvSales.Items)
                    {
                        if (lvis.SubItems[0].Text == btn.Text)
                        {
                            //get current quantity of listitem, increment it,     
                            //add the new value to this listitem quantity value...
                            //keep track of current index, use that to set the new value...
                        }
                        else
                        {
                            //re instantiate listviewitem, set its values, and add it
                        }
                    }
                };

答案 2 :(得分:0)

试试这个。这不完全正确,但尝试修复小错误。

var itemFound = false;
foreach (var listViewItem in lvSales.Items)
{
    if (listViewItem.SubItems[0].Text == btn.Text)
    {
        itemFound = true; break;
    }
}

if (!itemFound)
{
    var newlistViewItem = new ListViewItem();
    newlistViewItem.Text = count.ToString();
    newlistViewItem.SubItems.Add(btn.Text);
    newlistViewItem.SubItems.Add(btn.Name);
    newlistViewItem.SubItems.Add(count.ToString());
    newlistViewItem.SubItems.Add(btn.Tag.ToString()); // Email  
    lvSales.Items.Add(lvis);
}