对于 Winforms 应用程序中的虚拟 ListView 控件,RetrieveVirtualItem 事件的所有功能是什么?
场景:有一个 Dictionary 对象充当我的 ListView 缓存。它的项目显示在 ListView 上。单击列时,缓存字典在内存中排序,ListView 被 Refresh()ed。UI上的效果,ListView排序不错。:)
但我想了解 RetrieveVirtualItem 事件的作用是什么,它在 Refresh() 上触发。
在 RetrieveVirtualItem 事件处理程序 [ 别人的代码,:( ] 中,完成了以下操作:
- 基于
RetrieveVirtualItemEventArgs.ItemIndex
, 从 Cache 中获取消息 - Set
RetrieveVirtualItemEventArgs.Item
= 上面检索到的项目
似乎在事件处理程序中所做的事情很重要,因为如果我把它拿出来,ListView 会哭。这次活动的意义何在?
编辑
或者让我重新表述这个问题......我担心的是,为什么在排序(和RetrieveVirtualItem
事件处理程序)之后,所选项目仍保留在排序前的位置。即,如果我选择项目#5 并排序,并且如果排序使该项目成为最后一项,我希望在排序之后选择最后一项。但在我的情况下,排序后选择了第 5 个项目。那么RetrieveVirtualItem
WRT 选中项的默认行为是什么?