2013-11-22 206 views
0

我尝试在列表视图中添加项目。 但是这个代码根本就不工作。 我在哪里做错了?在列表视图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++; 
     } 
    } 
}; 

我想添加项目到列表视图。 如果已添加的项目将添加数量 否则它会添加新的。 顺便说一句,当我点击按钮什么都没有发生。

+0

创建之前重新实例化的ListViewItem新的listviewitem除此之外,你的代码并没有真正的工作,你需要在找到它的时候增加你的qunaitty的值,当它没有找到的时候创建新的......现在,当它没有找到时你正在增加, ,你并没有真正增加。 –

+0

这行'lvSales.Items.Add(lvis);'在foreach循环中会崩溃你的应用程序,不要编辑你正在迭代的集合h – liquidsnake786

回答

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

。其中剂量工作 –

+0

添加使用System.Linq; –

+0

'System.Windows.Forms.ListView.ListViewItemCollection'不包含'Where'的定义并且没有扩展方法'Where'接受类型'System.Windows.Forms.ListView.ListViewItemCollection'的第一个参数可以被找到(是你缺少使用指令或程序集引用?) –

1

您无法将项目添加到使用foreach(lvSales.Items)迭代的集合中。考虑更改的foreach为“对(......”另一循环就像

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

你是什么意思//重新实例化listviewitem,设置它的值并添加它? –

+0

重新初始化/或重新创建listviewitem对象。从新开始吧。设置它的值,添加它。 –

+0

看起来像它没有输入foreach –