Listview 虚拟模式下 是否支持图标显示?
本帖最后由 豌豆战士 于 2014-1-10 17:43 编辑如题.能否给出详细的说明.
虚拟模式没用过,姑且猜想一下:虚拟模式是加载海量数据用的,几十万甚至上百万的数据,如果加载图标,程序的性能肯定很低,折中一下,图片列数据保存的是图片的路径,反正不推荐。
推荐方法:使用数据分页。 heimuheimulm 发表于 2014-1-10 18:13
虚拟模式没用过,姑且猜想一下:虚拟模式是加载海量数据用的,几十万甚至上百万的数据,如果加载图标,程序 ...
能从内部分析一下吗?(代码实现方面)
追问:虚拟模式下,视图选择“小图标”视图。能支持checkbox吗?
谢谢! 由于没有用过,学习了一堆网上材料后,自己试验虚拟模式可以支持图标:
出于程序性能考虑,建议提前把需要加载的图标读入内存,不要运行时加载。
至于加载checkbox,后面再带有图片这个暂时没有什么好方法,如果在subitems中加载图标还要自己画,性能更低,继续研究吧。
/////////////////////////测试环境/////////////////////////
IDE: SharpDevelop 4.4
.Net Framework 4.5.1
///////////////////////////////////////////////////////////
代码片段:
private ImageList _imageList;
///////////////程序Load时加载图标至内存/////////////
_imageList = new ImageList();
_imageList.Images.Add("F:\1.png"); // ImageIndex = 0
_imageList.Images.Add("F:\2.png"); // ImageIndex = 1
listView1.SmallImageList = _imageListSmall;
listView1.LargeImageList = _imageListSmall;
///////////////listView1_CacheVirtualItems///////////////
var lvi = new ListViewItem("图标1", 0); heimuheimulm 发表于 2014-1-14 19:27
由于没有用过,学习了一堆网上材料后,自己试验虚拟模式可以支持图标:
出于程序性能考虑,建议提前把需要加 ...
虚拟模式下,是不能访问 Listview.Items。按照你所说的方法在虚拟模式下不能添加图标吧? 我明白你的意思,你所说的ListView.Items是指ListView控件在填入数据的时候不是用Collection.Add()这种方法,正确。
ListView开启VirtualMode模式的精髓就在有个缓冲集合,这个缓冲集合的各种数据就在CacheVirtualItems这个事件中被组合成为一个集合Collection,然后在RetrieveVirtualItem这个事件中把集合中的数据赋给ListView,通过
e.Item = collection; 这种方法。
简而言之:
CacheVirtualItems事件生成一个缓冲集合
RetrieveVirtualItem事件通过e.Item = collection;这种方法把集合中的数据赋给控件 heimuheimulm 发表于 2014-1-15 16:37
我明白你的意思,你所说的ListView.Items是指ListView控件在填入数据的时候不是用Collection.Add()这种方法 ...
懂了,大神啊。膜拜膜拜!{:3_52:} {:2_26:}
虚拟模式以前没听说过,所以一下子就激起了我的兴趣。{:2_35:}
我已经写了个程序,用来比较普通ListView和开启虚拟模式的ListView效率,差别很大,稍后放出。
普通1000条数据带图标,界面有明显卡顿现象。
虚拟模式下50000条数据带图标也没见卡顿。
至于原理还没有搞明白,再研究吧。{:2_35:} heimuheimulm 发表于 2014-1-15 20:32
虚拟模式以前没听说过,所以一下子就激起了我的兴趣。
我已经写了个程序,用来比较普通L ...
代码写得怎样了,求共享 额。。。前几天都发过了。。。{:2_25:}
发到winform板块去了,地址如下:
【Winform】ListView虚拟模式与普通模式的性能对比
【Winform】ListView虚拟模式与普通模式的性能对比 -- 深入分析 heimuheimulm 发表于 2014-1-23 07:22
额。。。前几天都发过了。。。
发到winform板块去了,地址如下:
啧啧···3KS
页:
[1]