以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  项目启动时怎么禁用 CurrentChanged 事件  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=25899)

--  作者:zharen110
--  发布时间:2012/11/19 19:37:00
--  项目启动时怎么禁用 CurrentChanged 事件
最近发现项目启动时,如果表中 CurrentChanged 事件有代码就会执行,这会很大程度上延缓了启动速度,有什么办法可以在启动时禁用这个事件,
--  作者:狐狸爸爸
--  发布时间:2012/11/19 20:42:00
--  

难道你的CurrentChanged有很耗时的代码?

如果有,应该改变你的设计。


--  作者:zharen110
--  发布时间:2012/11/19 20:56:00
--  
不是代码耗时,是currentchanged 事件 要从数据库查询结果,但是启动的时候数据源没加载进来,我使用读配置文件的方式动态加载数据源的,必须等所有表加载完毕后才有数据源,如果在这之前就触发currentchanged的话就麻烦了


--  作者:狐狸爸爸
--  发布时间:2012/11/19 20:57:00
--  

定义一个全局变量,默认为False

currentChanged判断这个全局变量,如果为False不执行。

在AfterOpenProject事件中,再将这个全局变量设置为True。


--  作者:zharen110
--  发布时间:2012/11/19 21:19:00
--  
定义全局变量的方法我也试过了,但是在所有表加载完成之前全局变量也没有被加载,也就是说在启动执行currentchanged时 没有全局变量


--  作者:blueskyyq
--  发布时间:2012/11/19 22:22:00
--  

我今天也被CurrentChanged 事给弄晕了,本来以为只有当表显示并当前行发生变化才会触发这个事件,在currentChanged事件中我引用了该表所在的窗口中的控件,结果项目启动过程中就提示出错,运行过程中也时不时提示出错,后来还是朱兄经验丰富帮我加了个窗口是否已打开的判断解决了


--  作者:狐狸爸爸
--  发布时间:2012/11/20 8:30:00
--  
以下是引用zharen110在2012-11-19 21:19:00的发言:
定义全局变量的方法我也试过了,但是在所有表加载完成之前全局变量也没有被加载,也就是说在启动执行currentchanged时 没有全局变量

 

执行CurrentChanged事件的时候,全局变量肯定有了,用Public的全局变量。