我从XML文档中读取文件并将它们放在列表视图中。我想添加一个搜索栏,以便我可以过滤列表视图中的所有信息。但是当我搜索exampel index2时,listview中的行将显示正确的信息(index2项的内容),但保存的XML文本将从index1而不是index2中获取信息。因为index2现在有index1所以它得到错误的信息。 这是我的基本删除代码,但我认为这是正确的。
然后我搜索pat并且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 :(得分: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]);
}