我正在尝试创建一个允许我检查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);
}
答案 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);
}
}
唯一的问题是,如果你试图删除不在新读取字符串中的项目,但你也可以解决它(告诉我你是否需要它,我会添加它)