以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 对窗口中输入框的ValueChanged事件及输入框的其他事件的分析与讨论! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1759) |
||||
-- 作者:cpayinyuan -- 发布时间:2009/2/7 9:17:00 -- 对窗口中输入框的ValueChanged事件及输入框的其他事件的分析与讨论! 我在一个子窗口中插入一个页面集合(TabControl)控件,在每个页面中有若干个标签和若干个输入框,每个输入框都绑定一个全局变量。但是,当我在页面集合中切换页面的时候,会自动激发某个输入框的ValueChenged事件,而且不是激发所有输入框的ValueChenged事件,而是某一个(具体哪一个,我没有找到规律)。昨天我试了半夜也没有查出原因,估计是FoxTable系统的问题了。在正常情况下,输入框应该显示全局变量的初始值,切换页面不应激发ValueChenged事件,希望贺老师认真检查一下!
[此贴子已经被作者于2009-2-10 15:36:38编辑过]
|
||||
-- 作者:菜鸟foxtable -- 发布时间:2009/2/7 12:48:00 -- 的确如此啊...怪事了.全局变量全变成20...... 此主题相关图片如下:001.jpg
|
||||
-- 作者:程兴刚 -- 发布时间:2009/2/7 13:41:00 -- 这并不是bug! |
||||
-- 作者:cpayinyuan -- 发布时间:2009/2/7 13:45:00 -- 以下是引用程兴刚在2009-2-7 13:41:00的发言:
这并不是bug! 不是bug,那是什么? |
||||
-- 作者:程兴刚 -- 发布时间:2009/2/7 15:01:00 -- 因为ValueChanged事件是在数据变化后执行,您的文字框控件又和全局变量进行了绑定,当点击页面,加入到页面中的控件的初始值为空,由于绑定过程的生效,把全局变量的值赋给了这个控件,该控件的值发生了变化,ValueChanged事件开始执行(此时应该执行,否则,就真是bug了),此次执行以后,全局变量的值和控件的值不再发生变化,所以就不再继续执行,如果您把其中一个变量的赋值公式变成这样: [此贴子已经被作者于2009-2-7 15:03:54编辑过]
|
||||
-- 作者:cpayinyuan -- 发布时间:2009/2/7 16:08:00 -- 以下是引用程兴刚在2009-2-7 15:01:00的发言:
因为ValueChanged事件是在数据变化后执行,您的文字框控件又和全局变量进行了绑定,当点击页面,加入到页面中的控件的初始值为空,由于绑定过程的生效,把全局变量的值赋给了这个控件,该控件的值发生了变化,ValueChanged事件开始执行(此时应该执行,否则,就真是bug了),此次执行以后,全局变量的值和控件的值不再发生变化,所以就不再继续执行, [此贴子已经被作者于2009-2-7 15:03:54编辑过] 道理可以理解。但是,这的确不符合实际的需要! [此贴子已经被作者于2009-2-7 16:30:11编辑过]
|
||||
-- 作者:舜风 -- 发布时间:2009/2/7 16:22:00 -- 6楼说的好似有道理 |
||||
-- 作者:程兴刚 -- 发布时间:2009/2/7 17:36:00 -- 呵呵,能改成全自动化才是好事,估计难度不小,不仅仅是这几个控件、还有表的单元格等所有涉及到ValueChanged事件的地方,都要改,而且,其值在什么情况下才算真正改变?nothing变为其他值不算真正变化的话,这种时候应该很多了,比如,起动系统,切换面板之前没有给变量赋值(看看能不能采用其他事件晚些给全局变量赋值,这样不知道行不行,没有细看您的文件),而是进入窗口的面板通过其他方法赋值产生的改变,也有从空值(nothing)变为其他值的过程,这样,又会出现新的问题,估计还是需要通过变通(其实也不叫变通,编程增加判断是很正常的事),仅代表个人观点,贺老师决定吧,本人不再议! |
||||
-- 作者:cpayinyuan -- 发布时间:2009/2/8 0:02:00 -- 以下是引用程兴刚在2009-2-7 15:01:00的发言:
因为ValueChanged事件是在数据变化后执行,您的文字框控件又和全局变量进行了绑定,当点击页面,加入到页面中的控件的初始值为空,由于绑定过程的生效,把全局变量的值赋给了这个控件,该控件的值发生了变化,ValueChanged事件开始执行(此时应该执行,否则,就真是bug了),此次执行以后,全局变量的值和控件的值不再发生变化,所以就不再继续执行 [此贴子已经被作者于2009-2-7 15:03:54编辑过] 如果真的是这样,那么在窗口中的输入框将无法再使用ValueChanged事件了(因为窗口中的输入框一般情况下都要绑定全局变量或者字段)。但在实际应用中,窗口事件中可能使用频率最多的就是ValueChanged事件了。如果对于每个ValueChanged事件还要用户自己加一些判断语句,真的是太不方便了,会大大的影响设计效率,这岂不违背了FoxTable的设计效率高使用简便的宗旨了吗?再者换个角度来说,既然用户在使用ValueChanged 事件时另外加个全局变量作个判断就可以解决问题,那么在系统中自动作这个判断应该也是很简单的事情,怎么会难度不小呢? [此贴子已经被作者于2009-2-8 10:25:42编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2009/2/8 11:21:00 -- 这个问题牵涉很多,微软的.net就是这么触发事件的,问题比较复杂,改与不改都有负面的影响. 也许加一个新的事件,在某个全局变量的值发生变化后触发,会计较合理。 |