2013-11-22 3 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

foreach 루프 내의이 줄 'lvSales.Items.Add (lvis);'는 앱을 크래쉬 할 것이고 반복하는 컬렉션을 편집하지 않아도됩니다. h – liquidsnake786

답변

0

이 시도 '에 대한 (...'와 같은 다른 루프에 foreach 문을 변경 고려하지만 시도하고 사소한 버그를 수정.

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

. dosent work –

+0

using System.Linq; –

+0

'System.Windows.Forms.ListView.ListViewItemCollection'에 'Where'및 확장 메서드 없음에 대한 정의가 포함되어 있지 않습니다. 'System.Windows.Forms.ListView.ListViewItemCollection'형식의 첫 번째 인수를 수락 할 수있는 위치가 있습니다. using 지시문이나 어셈블리 참조가 누락 되었습니까?) –

1

foreach (lvSales.Items)를 사용하여 반복하는 컬렉션에 항목을 추가 할 수 없습니다. 그것은 완전히 정확하지 않습니다.

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를 입력하지 않는 것처럼 보입니다 –