2017-11-29 19 views
0

特定の文字列をチェックした後、リストビューから行を削除したいと考えています。 の文字列がlistviewの文字列と一致する場合、行は残ります。それ以外の場合は行が削除されます。 2つのforeachループとif文の先頭部分はうまくいきますが、else節は私に問題を与えています....私はどのようにコード化するのかは分かりません。リストから選択した行を削除する方法

コードこれまで事前に

ありがとう: -

foreach (ListViewItem item in listView1.Items) 
{ 
    foreach (ListViewItem.ListViewSubItem subItem in item.SubItems) 
    { 
     if (subItem.Text.ToLower().StartsWith(textBox1.Text.ToLower())) 
     { 
      var index = item.Index; 
      MessageBox.Show(listView1.Items[index].ToString()); 
      count++; 
     } 
     else 
     { 
      listView1.Items[item].Remove(); 
     }    
    } 
}   

答えて

1

使用item.Indexが他のセクション

内のアイテムの場所で修正: listView1.Items [item.Index]

+0

ご協力のおかげで、私はあなたのラインを試したとき、私は、次のエラーを得た: - のInvalidArgument =値「-1」「インデックス」の有効ではありません。 –

0

代わりにアイテムを削除し、新たなリストに一致した項目を追加することができますそのような電流ループを形成: -

を3210の
 listView1.Items newItemList = new listView1.Items(); 
     foreach (ListViewItem item in listView1.Items) 
     { 
      foreach (ListViewItem.ListViewSubItem subItem in item.SubItems) 
      { 
       if (subItem.Text.ToLower().StartsWith(textBox1.Text.ToLower())) 
       { 
        var index = item.Index; 
        MessageBox.Show(listView1.Items[index].ToString()); 
        count++; 

        newItemList.Add(item); 

       } 
       else 
       { 
        //listView1.Items[item].Remove(); 
       } 
      } 
     } 
+0

ありがとうございました...私は最後の手段としてこれを使うのが好きです.3行以下で作業することができなければ –

関連する問題