我有一个带有大型 ListView 的应用程序,它非常慢,所以我正在实现 VirtualMode。 MSDN 似乎没有介绍如何在 ListView 中间添加和删除新项目。
例如,ListView 有 1000 个项目(表示磁盘上的文件),在 ListView 初始填充后(通过 RetrieveVirtualItem 事件)一些文件将被删除,一些文件将被添加,因此 VirtualListSize 在更新后甚至可能相同.
问题 1)如何对 ListView 说“这些项目已被更改/删除”以便它重新查询?
此外,一些文件刚刚发生变化,我想在 ListView 中反射(reflect)它们的变化状态。
问题 2) 如果 VirtualMode 不允许我访问我之前使用的 Items 集合(我对该集合使用了 ContainsKey 方法),我如何在 ListView 中找到一个项目。
听起来很简单,但我自己看不出来。非常感谢帮助。
瑞安
最佳答案
要添加或删除项目,simplay 将 VirtualListSize 设置为项目总数。要刷新单个项目,请使用 RedrawItems。
要定位特定项目,您可以使用已有的容器,不要返回到 ListView。列表中的索引应与 ListView 中的项目匹配。
关于.net - 使用 VirtualMode=True 时如何更新 WinForms ListView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/223516/