0

我正在尝试制作一个应用程序,让我检查 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);
            }
4

1 回答 1

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);
            }
        }

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

于 2012-06-06T17:19:01.330 回答