Je l'ai fait par le code suivant, mais il a une exception lorsque plusieurs éléments sont sélectionnés:
index était hors de portée. Doit être non négatif et inférieur à la taille de la collection. Nom du paramètre: index
List<ListViewItem> ListViewItems = new List<ListViewItem>();
foreach (int index in listView1.SelectedIndices)
{
ListViewItem SelectedListViewItem = listView1.Items[index]; // exception
ListViewItems.RemoveAt(index);
}
…
void listView1_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e)
{
e.Item = ListViewItems[e.ItemIndex];
}
Chaque fois que vous supprimez article (s) d'une collection, toujours itérer du plus grand indice à l'indice le plus petit, comme celui-ci:
for (int index = listView1.SelectedIndices.Count - 1; i >= 0; i--)
{
…
}
En effet, Chaque fois que vous supprimez un élément dans une collection, l'index change si vous n'oscédez pas du plus grand au plus petit index.
vérifier: http://stackoverflow.com/questions/444727/loop-through-all-elements-dans-une-listview-in-virtual-mode –