2016-09-19 15 views
0

XML文書からファイルを読み込んでリストビューにしました。そして、私はlistbarのすべての情報をフィルタリングできるようにsearchbarを追加したいと思います。しかし、exampel index2の場合、リストビューの行に正しい情報(index2項目の内容)が表示されますが、保存されたXMLテキストはindex2ではなくindex1から情報を取得します。インデックス2がインデックス1を持っているので、間違った情報が得られます。 これは私の基本的な削除コードですが、これは正しいと思います。xmlファイルからlistviewへの検索バー

は、私はパットを検索し、リストビューは正しいですが、情報が間違っている:https://gyazo.com/36749c5112706c9fbdb9acec248700de

 if (txtSearch.Text != "") 
     { 
      for (int i = listPeople.Items.Count - 1; i >= 0; i--) 
      { 
       var item = listPeople.Items[i]; 
       if (item.Text.ToLower().Contains(txtSearch.Text.ToLower())) 
       { 
       } 
       else 
       { 
        listPeople.Items.Remove(item); 
       } 
      } 
      if (listPeople.SelectedItems.Count > 0) 
      { 
       listPeople.Focus(); 
       people.RemoveAt(listPeople.SelectedItems[0].Index); 
       listPeople.Items.Remove(listPeople.SelectedItems[0]); 
      } 

これは、すべて私のコードです:http://pastebin.com/YtigvfBC

+0

検索手順:1 https://gyazo.com/142ae250ee030cc9d708a69754a946ed 2 https://gyazo.com/ad45f8b0816691c6a967837f43d43cd3 3 https://gyazo.com/36749c5112706c9fbdb9acec248700de – Patte

答えて

0

あなたは、インデックスを追加することができます。そして最後に、あなたは正しく削除することができます。例えば

if (txtSearch.Text != "") 
    { 
     List<int> indexes = new List<int>(); 
     for (int i = listPeople.Items.Count - 1; i >= 0; i--) 
     { 
      var item = listPeople.Items[i]; 
      if (item.Text.ToLower().Contains(txtSearch.Text.ToLower())) 
      { 
      } 
      else 
      { 
       indexes.add(i); 
      } 
     } 
     foreach(int index in indexes) 
     { 
       //delete with index 
     } 
     if (listPeople.SelectedItems.Count > 0) 
     { 

      listPeople.Focus(); 
      people.RemoveAt(listPeople.SelectedItems[0].Index); 
      listPeople.Items.Remove(listPeople.SelectedItems[0]); 
     }