Welcome

首页 / 软件开发 / C# / C# Winform ListView虚拟模式

C# Winform ListView虚拟模式2013-11-13一、前言

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

如下为虚拟模式的一个应用示例(仿VS2010错误列表),截图如下:

二、虚拟模式相关注意点

1、设置一个缓存属性,来保存需要加载的数据:

       protected List<ListViewItem> CurrentCacheItemsSource

       {

           get;

           private set;

       }

2、通过虚拟模式来加载数据,如下:

private void LoadListViewItems(List<ListViewItem> items){listView.Items.Clear(); if (items == null){stripStatusInfo.Text = "当前总共记录数为:0";return;}listView.GridLines = true;listView.FullRowSelect = true;listView.View = View.Details;listView.Scrollable = true;listView.MultiSelect = false;listView.HeaderStyle = ColumnHeaderStyle.Clickable;listView.Visible = true;listView.VirtualListSize = items.Count;listView.VirtualMode = true;listView.RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(listView_RetrieveVirtualItem);stripStatusInfo.Text = "当前总共记录数为:" + items.Count;}
listView.VirtualMode = true;//设置虚拟模式

listView.VirtualListSize = items.Count;//设置虚拟列表容量大小

listView.RetrieveVirtualItem += new RetrieveVirtualItemEventHandler(listView_RetrieveVirtualItem);//绑定虚拟操作