labview中的列表、表格和树型控件有个共同的问题就是数据刷新缓慢,数据量小的时候没有不易察觉,但当这类控件要显示大量的数据时,往往刷新一遍就要耗费甚至几分钟的时间。 究其原因是因为这类控件插入数据只能一条一条的插入,而不能将数据一次性导入,导致控件频繁的更新,耗费大量的资源。LabView自带的这些控件都无法在插入数据的过程中禁用这些控件的更新。现有的解决办法是这类控件更新时,调用前面板属性节点,禁用前面板更新,控件中的数据更新完成后再启用前面板更新,这样可以极大的提升控件刷新效率,但这样在数据控件添加数据过程中,控件相当于被锁死,对用户来说也极不友好。 所幸LabView提供了.NET容器和Ac tiveX容器,可以调用各种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控件来说,只需要几秒钟即可。
|