次のコードで実行しましたが、複数のアイテムが選択されている場合は例外です。
インデックスが範囲外でした。負ではなく、コレクションのサイズより小さくなければなりません。パラメータ名:インデックス
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];
}
コレクションからアイテムを削除するときはいつでも、次のように最大のインデックスから最小のインデックスまで常に繰り返します。
for (int index = listView1.SelectedIndices.Count - 1; i >= 0; i--)
{
…
}
これは、コレクション内の項目を削除するたびに、最大のインデックスから最小のインデックスに反復処理を行わないと、インデックスが変更されるためです。