.net - 使用 VirtualMode=True 时如何更新 WinForms ListView?

标签 .net winforms listview virtualmode

我有一个带有大型 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/

相关文章:

c# - 将 System.Windows.Forms.Shortcut 转换为 KeyData/KeyCode

c# - 如何监控启动 "dllhost.exe"的进程?

Android SelectableItemBackground 不工作

android - ViewHolder 模式中的 setTag 和 getTag 的作用是什么?

c# - INotifyDataErrorInfo.GetErrors 何时调用 null 与 String.empty?

c# - Entity Framework 5 SaveChanges() 不回滚尝试的事务

c# - 将word 2010中富内容控件的内容转成html格式

c# - 如何在堆栈跟踪中获取参数值

c# - 网络摄像头:打开和关闭或或保持打开

c# - ListView ItemDataBound - 确定项目是否为 AlternatingItem?