发 帖  

[经验] LabView使用.NET容器解决LabView自带的列表、表格和树等控件运行效率极其低下的问题

2016-12-2 14:44:07  4919
分享
14
LabView中的列表、表格和树型控件有个共同的问题就是数据刷新缓慢,数据量小的时候没有不易察觉,但当这类控件要显示大量的数据时,往往刷新一遍就要耗费甚至几分钟的时间。
究其原因是因为这类控件插入数据只能一条一条的插入,而不能将数据一次性导入,导致控件频繁的更新,耗费大量的资源。LabView自带的这些控件都无法在插入数据的过程中禁用这些控件的更新。现有的解决办法是这类控件更新时,调用前面板属性节点,禁用前面板更新,控件中的数据更新完成后再启用前面板更新,这样可以极大的提升控件刷新效率,但这样在数据控件添加数据过程中,控件相当于被锁死,对用户来说也极不友好。
所幸LabView提供了.NET容器和ActiveX容器,可以调用各种Windows平台的控件,可以解决LabView中控件刷新缓慢的问题。这里以.NET中的树形控件为例进行说明。
1)建立遍历文件夹的子VI,通过递归的方式,将指定路径下的所有文件夹和文件查找出来,并依次添加到树形控件的节点上,如图1所示。
2)新建主VI并在前面板添加.NET容器控件,右键单击选择插入.NET控件,在程序集中选择System.Windows.Forms(*.*.*.*)>TreeView,并确定,这样.NET树形控件就添加到前面板上了。TreeView是在System.Windows.Forms命名空间下声明的类,在LabView中通过属性节点和调用节点可以设置TreeView的属性和方法。图2中为TreeView控件添加了背景色(SkyBlue),和ImageList类(用来存储树形节点上的图标)。
3)TreeView控件经过上述设置之后,接下来是为其插入数据,其程序代码如如3所示。这里只是为了举例说明,因此结构用的比较简单随意。程序中TreeView.BeginUpdate表示提示控件要开始插入数据了,此时控件不会刷新界面,调用TreeView.EndUpdata后,控件开始界面刷新。具体内容可参考微软的MSDN。
4)完成之后,运行程序,效果如图4所示。对于包含上万个文件的文件夹,在LabView自带树形控件中,刷新一次,需要好几分钟,而对于.NET的TreeView控件来说,只需要几秒钟即可。

20161202_140605.jpg
20161202_143744.jpg
20161202_143757.jpg
20161202_143944.jpg

遍历文件夹.zip

下载积分: 积分 -1 分

33.35 KB, 下载次数: 263, 下载积分: 积分 -1 分

评分

参与人数 1积分 +5 收起 理由
wyq95361977 + 5 您的帖子很精彩,期待您分享的下一个帖子!.

查看全部评分

宁静致远。。 2016-12-2 15:00:47
楼主大神,以前在使用tree控件的时候都觉得刷新好慢,几百行需要好几秒的时间,这种方法确实不错,
回复

举报

隔壁老wang 2016-12-2 17:26:30
宁静致远。。 发表于 2016-12-2 15:00
楼主大神,以前在使用tree控件的时候都觉得刷新好慢,几百行需要好几秒的时间,这种方法确实不错,

效率确实可以提高至少好几十倍,数据量大的时候非常明显
回复

举报

woriaty 2016-12-2 17:58:56
厉害,学习一下
回复

举报

王栋春 2016-12-2 21:37:19
好贴 学习了     
回复

举报

快乐滴起飞 2016-12-5 13:53:50
感谢分享,对我做项目有很大启发。
回复

举报

zhiyuzhishan 2016-12-5 13:58:58
学习了。
回复

举报

yytu123 2016-12-5 20:44:42
2W条时   系统每次颤抖
回复

举报

wanghui289 2016-12-6 09:13:50
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
回复

举报

隔壁老wang 2016-12-6 09:20:45
yytu123 发表于 2016-12-5 20:44
2W条时   系统每次颤抖

不至于吧!我查找了包含18000+文件和文件夹的,用了接近10s,我电脑配置也不高,有可能是你的文件夹太多了。而且这个也只能提高Labview自带控件的效率,也是不能从根本上解决这个问题,用Labview自带的控件试试,2W条估计要几分钟。要想速度更快,只能再做优化或用其它语言了,我用c#查找一下1.8W多条基本不到3s。
回复

举报

lzhcl97 2016-12-9 12:41:36
感谢分享!!!!!!!!!!!
回复

举报

krize 2016-12-21 15:28:42
赞!其它很多.net控件也可以用,楼主可以再来一贴讲讲怎么让这些控件像labview中的控件一样响应值改变、鼠标点击等常用事件。
回复

举报

小黄小金小凤 2016-12-31 13:31:55
不错,给楼主点赞
回复

举报

quning123 2017-1-7 17:44:52
很不错的资料啊
回复

举报

sageliu 2017-3-18 09:21:16
很不错的资料啊
回复

举报

finalmoon 2017-5-12 11:18:23
好东西,学习了
回复

举报

lilyding8 2017-6-1 17:07:15
O(∩_∩)O谢谢楼主
回复

举报

lilyding8 2017-6-1 17:07:23
O(∩_∩)O谢谢楼主
回复

举报

亿度qiang 2017-12-2 22:30:37
学习学习。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
回复

举报

labview_2012 2017-12-5 23:51:18
谢谢分享
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

12下一页
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表