Winforms App内のVirtual ListViewコントロールに関して、ALL RetrieveVirtualItemイベントの機能は何ですか?ListView.RetrieveVirtualItemイベント - C#
シナリオ:ListViewキャッシュとして機能する辞書オブジェクトがあります。その項目はListViewに表示されます。列をクリックすると、キャッシュ辞書がメモリ内でソートされ、ListViewがリフレッシュ()されます。 UIへの影響は、ListViewが適切にソートされます。 :)
しかし、Refresh()でトリガーされるRetrieveVirtualItemイベントの役割を理解したいと思います。 RetrieveVirtualItemイベントハンドラ[他の誰かのコード、:(]で
、行われ、次のとおりです。RetrieveVirtualItemEventArgs.ItemIndex
に基づいて
- 、キャッシュ からメッセージを取得
- 設定
RetrieveVirtualItemEventArgs.Item
= retreivedアイテム
イベントハンドラで何が行われているかは重要ですが、これを取り除くとListViewが鳴り響くため、このイベントの重要性は何ですか?
EDIT 私の懸念は、なぜ、並べ替え(およびRetrieveVirtualItem
イベントハンドラ)後、選択された項目がソート前の位置に残っているかということです。つまり、アイテム#5を選択してソートし、ソートによってこのアイテムが最後のアイテムになる場合は、ソート後に最後のアイテムを選択することをお勧めします。しかし、私の場合、ソート後に5番目のアイテムが選択されます。では、デフォルトの動作はRetrieveVirtualItem
WRTで選択した項目は何ですか?
あなたはそれがすべての意味は、その逆に、「あなたはRetrieveVirtualItemイベントを処理しない場合、何のListViewItemsはあなたのリストビューに追加されません」と述べましたアイテムはこのイベントで追加されますか?それは 'myCache [e.ItemIndex - firstItem]'でしか再生されないからです。 – ViV
はい、このイベントによってすべてのアイテム(listviewが仮想モードの場合)が追加されます。このメソッドは、else節内のコードが実行されるかのようにmyCacheから項目を取得するだけでなく、新しい項目がインスタンス化され、イベントargs(e.Item = new ListViewItem())に割り当てられます。 CacheVirtualItemsに依存してキャッシュを管理する別のイベント – Richard