查了好多资料,可是找不到啊。由于TreeVeiw节点可能要不断增加,并且节点数量有可能到百万级,越到后面就显示越慢,有什么方法或控件可以解决这个问题么?
解决方案 »
- 关于word模板的问题
- 我想让一个应用程序执行5天就不能运行该程序,该怎样办???我没有具体思路,高手有办法吗?最好有个简单程序!谢谢!
- 出现"invalid argument"错误:-(
- 请问本地一个表里的记录要增加到网站上的一个表里有哪些好方法?
- 简体系统编写的程序去到繁体系统会出现什么问题?
- dbgrid中增加一行“合计”字段
- 寻求CAB压缩控件 for D6 ,或者单元
- 为什么安装了天网防火墙,REALPLAY就不能在线播放了??
- 我好自卑,这么简单的题目都没答出来!
- C/s模式怎么开发啊?
- SQL自动增加记录,不知如何是好.
- 好心人进来看一下好吗?谁能帮我把以下的代码转DELPHI代码吗?小弟看不懂。。谢谢各位了
...//添加节点
TreeView1.Items.EndUpdate;
赞成先保存节点信息,再用BeginUpdate/EndUpdate动态构建
http://www.soft-gems.net/
你可以在GetNode的时候再去数据库中把要的信息查出来生成节点给它。
Windows的资源管理器就算显示成千上万的文件夹,它也是固定的,而且可以根据点击再搜索。
而我目前做的是测试工具,并不是zxf_feng所说要“测试利用treeview的显示速度”,而是需要实时显示,实时显示的意思就是不断变化,不断添加。
多谢大家的支持!
============================
直接用TTreeView不用API那么添加每个节点的时间与 Count的Count次方成正比(这还不考虑内存切换)
用Windows API可以保证添加每个节点的时间是常量(不考虑内存切换)
建议LZ看看,这里面有个示例,我当时用微软的树控件慢的要死,我的数据也在5000条以上,
用了梅花雪网站提供的方法速度非常快!
好好考虑大家的建议,不要只是一味的否定。 标准的TreeView可以实现VirtualTreeView的效果,参考Delphi的Demo:Virtual Listview,虽然是介绍ListView的,但TreeView类似 你直接显示,是把数据保存在TreeView中了,自己不用保存数据了,虽然简单,但结点多时,速度奇慢,
这是因为TreeView保存的数据不光是你的数据,还会附加了很多东西,直接吃掉了大量的内存(至少几十M,多则几百M,甚至上G),导致不光你的程序慢,连整个系统都会很慢 这么大量的数据,你得用合适的数据结构解决,而且不能保存全部数据到内存,应该需要保存到硬盘(为了加快速度,可以实用类似Cache的方法,减少硬盘读写次数)
当然用数据库实现可以避免这些复杂的东西,但需要测试,因为数据库采用的一种通用结构,效率肯定比专门针对这个问题的优化的效果差 屏幕的大小是有限的,Virtual TreeView只是访问需要显示的数据,再显示,这样就避免了在内存中保存大量数据,运行速度关键取决于你搜索数据的速度 至于你提到的实时显示不是问题,你仔细思考一下 Virtual TreeView的原理就会明白。 不要怕复杂,这个问题本身就不简单,不可能像你想象的可以很简单解决!
你要用TreeView测试什么?需要写1百万条数据?