如果我在虚拟模式下使用ListView,那么,据我所知,列表视图仅跟踪列表中的少量项目。当用户滚动时,它会动态检索需要从虚拟列表中显示的项目。
但是如果在主列表中添加或删除了某个项目呢?如果在列表视图显示的索引范围之外添加/删除项目,那么我将假设当用户滚动到该索引时列表视图将显示添加/缺失的项目。它是否正确?但是,如果在用户当前正在查看的索引范围中添加/删除项目,该怎么办?如何触发列表视图以刷新当前正在查看的项目以显示新项目/缺失项目?
仅供参考:如果有任何不同,我正在使用ObjectListView。
答案 0 :(得分:8)
虚拟列表对您的项目列表一无所知。它不会跟踪它们,甚至不是一小部分。它只询问“你想在第n行显示什么?”
如果您的主列表发生更改,您只需重绘列表即可。 Invalidate()
会为您做到这一点。列表视图将再次询问您应该在控件中可见的每一行显示的内容。
如果您正在使用ObjectListView,您是否考虑过使用FastObjectListView,它可以为您提供虚拟列表的速度优势以及普通ObjectListView的易用性?