添加新项目时如何在列表视图中保留所选项目?

时间:2012-06-06 17:11:02

标签: c# winforms listview items

我正在尝试创建一个允许我检查ListView中的项目的应用程序,并且一切正常,但是如果我在检查项目时向ListView添加更多项目。它取消全部取消选中,因为重新加载了ListView。有办法解决这个问题吗?因此,即使我添加新项目,我的所有项目都会保持检查状态吗?这是我目前的代码。

            TextReader reader = new StringReader(richTextBox1.Text);
            string[] strItems = null;
            foreach (ListViewItem items in listView1.Items)
            {
                items.Remove();
            }
            while (reader.Peek() != -1)
            {
                ListViewItem item = new ListViewItem();
                strItems = reader.ReadLine().Split("-".ToCharArray());
                item.Text = strItems[0].ToString();
                item.SubItems.Add(strItems[1].ToString());
                item.SubItems.Add(strItems[2].ToString());
                item.SubItems.Add(strItems[3].ToString());
                item.SubItems.Add(strItems[4].ToString());
                listView1.Items.Add(item);
            }

1 个答案:

答案 0 :(得分:0)

你可以做那样的事情(并通过找到更好的标签/存在逻辑来改善它):

        TextReader reader = new StringReader(richTextBox1.Text);
        string[] strItems = null;
        while (reader.Peek() != -1)
        {
            string nextRow = reader.ReadLine();
            if (!listView1.Items.ContainsKey(nextRow.GetHashCode().ToString()))
            {
               ListViewItem item = new ListViewItem();
               item.Name = nextRow.GetHashCode().ToString();
               strItems = nextRow .Split("-".ToCharArray());
               item.Text = strItems[0].ToString();
               item.SubItems.Add(strItems[1].ToString());
               item.SubItems.Add(strItems[2].ToString());
               item.SubItems.Add(strItems[3].ToString());
               item.SubItems.Add(strItems[4].ToString());
               listView1.Items.Add(item);
            }
        }

唯一的问题是,如果你试图删除不在新读取字符串中的项目,但你也可以解决它(告诉我你是否需要它,我会添加它)