我有一个带有 ListView 的表单(.NET 4.5 VS.2015),它可能包含几百甚至一千多行。实验已经表明,表单会陷入僵局且无响应,因为它在任何给定时间仅显示大约 20 个时尝试加载所有 ListViewItems。
因此,我使用简单的缓存在 ListView 上实现了虚拟模式。我已经为 RetrieveItems 和 CacheVirtualItems 事件设置了 VirtualListSize、启用了虚拟模式并连接了事件处理程序。
现在,根据文档,您相信 CacheVirtualItems 将在 RetrieveItems 之前被调用,以允许您的缓存填充 ListView 打算查看的项目范围。
但就我所见,CacheVirtualItems 在第一个 RetrieveItems 之前从未被调用过!您希望它被调用,以便您可以创建缓存并预填充它(至少设置容量),然后在缓存未命中时适当地填充。
我不是很好理解吗?如果没有首先调用 CacheVirtualItems 让您的应用程序为请求做准备,那么有什么意义呢?