對於Winforms應用程序中的虛擬ListView控件,什麼是ALL RetrieveVirtualItem事件的功能?什麼是ListView.RetrieveVirtualItem事件 - C#
場景:有一個Dictionary對象充當我的ListView緩存。其項目顯示在ListView上。單擊列時,緩存字典將在內存中排序,而ListView將被刷新()。對UI的影響,ListView排序良好。 :)
但我想了解RetrieveVirtualItem事件的作用是什麼,它在Refresh()上觸發。
在RetrieveVirtualItem事件處理[別人的代碼,:(],下面是完成:
- 基於
RetrieveVirtualItemEventArgs.ItemIndex
,從Cache中獲得 - 設置
RetrieveVirtualItemEventArgs.Item
= retreived項目上述消息
看來事件處理程序中做了什麼很重要,因爲如果我把它拿出來,ListView會哭。這個事件的意義是什麼?
編輯 或讓我重新提出問題......我的擔心是,爲什麼在排序(和RetrieveVirtualItem
事件處理程序)後,所選項目仍保留在排序前的位置。即,如果我選擇項目#5並進行排序,並且如果排序使該項目成爲最後一個項目,則我希望在排序之後選擇最後一個項目。但在我的情況下,排序後選擇第5項。那麼RetrieveVirtualItem
WRT選擇的項目的默認行爲是什麼?
你說:「如果你不處理RetrieveVirtualItem事件則沒有ListViewItems將被添加到您的ListView」,等等,相反,它意味着所有的項目是由這個事件添加?似乎不,因爲它只能用'myCache [e.ItemIndex - firstItem]'。 – ViV
是的,所有項目(當listview處於虛擬模式時)都會被這個事件添加。該方法不僅依賴於從myCache中獲取項目,就像執行else子句中的代碼一樣,新項目被實例化並分配給事件args(e.Item = new ListViewItem())。另一個事件CacheVirtualItems依賴於管理緩存 – Richard