如何使用 ListView 的虚拟模式(VirtualMode )

2025-03-30 00:48:22

代艨位雅剖码共享下:】

其实很简疟觥窖捎单,就是为了方便管理 各个村的相关数据Excel。因为是4个人先后录入的没有协调好,导致每个人一种格式,管理混乱。所以索性直接写了个小程序,好管理,也方便领导查阅。程序还没有完成处理好,里面的方法不一定是最正确的,请慎重参阅。

【开发环境是VS2010,解决方案需要2010打开,原所有的Excel没有拷贝】

百度网盘:

http://pan.baidu.com/share/link?shareid=1255920997&uk=2684475260

--------------------------------------------------------------------------------------

当向ListView 添加 item的时候。如果采用循环的方式。比如:

如何使用 ListView 的虚拟模式(VirtualMode )

会导致 ListView 频繁更新页面导致闪屏一样的效果。那么这个时候就要使用 ListView的 虚拟模式,也就是VirtualMode

先说一下 :VirtualMode 的原理。引用 MSDN

将VirtualMode属性设置为true会将ListView置于虚拟模式。在虚拟模式下,不使用普通Items集合。而是在ListView需要ListViewItem对象时动态创建这些对象。

虚拟模式许多情况下都很有用。如果必须从已存在于内存中的非常大的集合填充一个ListView对象,则为每项创建一个ListViewItem对象会很浪费。在虚拟模式下,仅创建所需的项。在其他情况下,可能需要经常重新计算ListViewItem对象的值,对整个集合进行此操作将产生不可接受的性能。在虚拟模式下,仅计算所需的项。

为了使用虚拟模式,必须处理RetrieveVirtualItem事件,每当ListView需要项时都会引发该事件。此事件处理程序应创建属于指定索引处的ListViewItem对象。此外,必须将VirtualListSize属性设置为虚拟列表的大小。

其实是过程就是 : 比如 Coll 是一个 存放对象的数列 比如List 现在要把Coll中的对象填充到ListView中。那么可以使用一个 全局的ListemSearch对象首先复制Coll 对象。然后 在 ListView的

RetrieveVirtualItem 事件中进行赋值(向ListView中添加Item)

emSearch即作为 ListView的缓存器。

如何使用 ListView 的虚拟模式(VirtualMode )

如图: 在RetrieveVirtualItemEventArgs 这个时间对象中 得到当前的填充的索引。

那么emSearch[e.ItemIndex] 就得到这个 缓存中的对象。然后 通过 e.Item =X 即可将相应的对象的属性进行 listview.Items.Add 操作。

注意:要想listView1_RetrieveVirtualItem 自动执行:必须首先 设置VirtualListSize

listView1.VirtualListSize = emSearch.Count;

只有设置后,才会自动执行listView1_RetrieveVirtualItem 里面的方法:

如何使用 ListView 的虚拟模式(VirtualMode )

这一步是实现右键菜单的。

如何使用 ListView 的虚拟模式(VirtualMode )

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢