C# 在列表视图c中搜索项目#

C# 在列表视图c中搜索项目#,c#,C#,我尝试在列表视图中添加项。 但这段代码似乎根本不起作用。 我哪里做错了 btn.Click += (senders, eventArgs) => { foreach (ListViewItem lvis in lvSales.Items) { if (lvis.SubItems[0].Text == btn.Text) { MessageBox.Show("!!!!!!!"); } el

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

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++;
        }
    }
};
我想将项目添加到列表视图。 如果项目已添加,则将添加数量 否则它将添加新的。
顺便说一句,当我单击按钮时,什么也没有发生。

您无法将项目添加到使用foreach(lvSales.items)迭代的集合中。考虑将For转换成其他循环,比如……(……

< P>)试试这个。它不是完全正确的,但是尝试修复小错误。

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

在创建新的listviewitem之前,请重新实例化listviewitem。除此之外,您的代码实际上不起作用。您需要在找到它时增加QUNAITY值,并在未找到它时创建新的QUNAITY值……现在,您在找不到它时增加QUNAITY值,而此时,您甚至没有真正增加QUNAITY值。此行“lvSales.Items.Add(lvis)”;'在foreach循环中将使应用程序崩溃的情况下,不要编辑正在迭代的集合。//重新实例化listviewitem,设置其值,然后添加它是什么意思?重新初始化/或重新创建listviewitem对象。从新对象开始。设置其值,然后添加它。看起来它没有使用System.Linq;进入foreachaddndows.Forms.ListView.ListViewItemCollection”不包含“Where”的定义,并且找不到扩展方法“Where”“接受类型为“System.Windows.Forms.ListView.ListViewItemCollection”的第一个参数(是否缺少using指令或程序集引用?)更新的代码,看起来ListViewItemCollection没有实现IEnumberable。您可以使用已编辑的代码。谢谢。代码刚刚出现问题。它应该是“ListViewItem ListViewItem in lvSales.Items”,而不是var。非常感谢。!!
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);
}