2016-09-19 59 views
0

我從一個XML文檔讀取我的文件,並把它們放在一個列表視圖中。我想添加一個搜索欄,以便我可以在列表視圖中過濾所有信息。但是當我爲檢查索引2進行搜索時,來自列表視圖的行將顯示正確的信息(索引2項的內容),但保存的XML文本將從索引1而不是索引2中刪除信息。因爲索引2現在有索引1,所以它得到錯誤的信息。 這是我的基本刪除代碼,但我認爲這是正確的。搜索欄從xml文件到列表視圖

然後我搜索PAT和列表視圖是正確的,但信息是錯誤的: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]); 
     }