我正在尝试从ListView组件(C#.NET 4.0)中的ListViewGroup中删除所有项目。我尝试过以下的事情,但他们会回归意想不到的行为。
listView1.Groups[4].Items.Clear(); // Does only remove the item from the group,
// but is then placed in a new Default group.
foreach (ListViewItem item in listView1.Groups[4].Items)
{
item.Remove();
}
// This throws an error which says that the list is changed.
我现在使用listView1.Items.Clear();
清除组中的所有项目,并逐个读取它们。但是,这会导致我的GUI在执行此操作时闪烁。我想知道如何删除组中的所有项目。所以我只需要重新添加项目组(我想要的,因为项目数量不同,名称和子项目也不同)。
注意:该组名为lvgChannels
,索引为4.
答案 0 :(得分:1)
试试这个:
List<ListViewItem> remove = new List<ListViewItem>();
foreach (ListViewItem item in listView1.Groups[4].Items)
{
remove.Add(item);
}
foreach (ListViewItem item in remove)
{
listView1.Items.Remove(item);
}
}
第二个陈述的问题在于您从正在迭代的列表中删除了一个项目。
答案 1 :(得分:1)
您需要的是从列表视图中删除该组中列出的所有项目的项目。
for (int i = listView1.Groups[4].Items.Count; i > 0; i--)
{
listView1.Items.Remove(listView1.Groups[4].Items[i-1]);
}
您的代码的问题在于您正在执行增量而不是减量。每次移除一个项时,计数递减,因此for循环应从最大计数开始并递减为0.