わかりましたので、RetrieveVirtualItem イベントが ListView のすべての項目を呼び出して完了したことを確認する必要があります。私がこれをやろうとしている理由は、ユーザーが ListView に新しい項目を追加するときに、リストを更新してから項目を選択する必要があるためです。
通常の WinForms では、これを実装しても問題はありませんでした。ただし、仮想リストでは、RetrieveVirtualItem がいつ完了したかわかりません。自分の ListView をロールバックする必要がある場合は、ここで方向性が必要です。
編集1
ユーザーがリストビュー内のアイテムをクリックすると、そのアイテムが選択済みに設定され、コードで同じことができます。
item.Selected = true;
これにより、SelectedIndexChanged イベントがトリガーされます。その場合、そのアイテムからコンテンツをロードします。仮想モードでアイテムを更新した場合。リストの更新が完了して上記のイベントをスローするまで、項目を .Selected = true として設定することはできません。
編集2
機能全体を再構築するのではなく、このコントロールにある機能を保持しようとしていると思います。ユーザーが新しいアイテムをリストに追加すると、そのアイテムがリストの一番上に追加され、選択済みに設定され、ユーザーが右側に情報を入力できるようになります。ダイアログを使用する代わりに。
編集3
私の質問がより明確になるように。RetrieveVirtualItem イベントがスローされる前に項目を .Selected に設定すると、更新後に項目が選択されたままになりません。