用户界面的事件结构返回控件上次的值
主要软件:
主要软件版本: 8.6.1
主要软件修正版本: N/A
次要软件: N/A
问题: 在我的LabVIEW程序当中,我在我的某个事件结构分支中读取一个字符串输入控件的值。但是当事件发生的时候,字符串控件返回的却是上次的值而不是期望的当前值。
解答: 下图所示的程序框图就会出现所述的问题。当在前面板中的字符串输入控件进行输入时点击fire event按钮,在字符串输出控件中显示的却是字符串输入控件上次的值。因此当你运行程序的时候,在字符串输入控件输入one 时点击fire event 按钮在字符串输出空间中没有任何显示,而当你输入 two 再同样操作时,却输出了 one ,似乎显示控件更新的总是上一次输入控件的值。.JPG)
上例演示的仅仅是字符串控件出现的情况,实际上类似情况都会出现在需要用户进行键盘输入的控件当中(包括路径,字符串以及数值控件等)。
上述问题可以简单地由用户释放输入完毕的字符串控件即可解决。因为和字符串输入控件相关的注册会保持控件的值直至该控件被释放为止。
然而这并不是一种理想的解决方法,因为显然不能期望用户每次都会在输入完成后做这样的操作。
下面是几种解决的方法。
- 将事件的Fire Event 鼠标按下改成Fire Event值改变,因为值改变显然需要更多的事件处理,因此字符串控件的新值有足够的事件来覆盖旧的值
- 更好的方法是右击字符串输入控件选择属性。启用键入时刷新。这样每次用户输入的时候
字符串控件注册器都会动态更新控件的值,也就不会有上述的问题。需要注意的是默认状态下
控件都会保持他原来的值直到控件被释放。
- 在Fire Event事件分支中增加两个顺序结构,在第一帧中放置一个延时,
而在第二帧中读取输入字符串控件的值,通过一个1ms的延时使得字符串
输入控件更新输入值,然后再下一帧中进行读取。
相关链接: Event-Driven Programming in LabVIEW
附件:
报告日期: 07/21/2009
最近更新: 05/24/2011
文档编号: 4ZK79T34
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.