搜索栏从xml文件到listview

时间:2016-09-19 10:35:58

标签: c# xml listview search

我从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

1 个答案:

答案 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]);
        }