0

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();、グループ内のすべてのアイテムをクリアし、それらを1つずつ読み上げるために使用しています。ただし、これにより、このアクションが実行されると GUI がちらつきます。グループ内のすべてのアイテムを削除する方法を知りたいです。そのため、アイテム グループを再度追加するだけで済みます (アイテムの数が異なり、名前とサブアイテムも異なるため、これが必要です)。

注: グループは呼び出されlvgChannels、インデックス 4 を持ちます。

4

2 に答える 2

1

必要なのは、そのグループ内にリストされているすべてのアイテムのリスト ビュー自体からアイテムを削除することです。

for (int i = listView1.Groups[4].Items.Count; i > 0; i--)
{
    listView1.Items.Remove(listView1.Groups[4].Items[i-1]);
}

コードの問題は、デクリメントではなくインクリメントを行っていることです。アイテムが削除されるたびにカウントが減少するため、for ループは最大カウントから開始し、0 まで減少する必要があります。

于 2013-06-21T09:35:36.383 に答える