Foxtable(狐表)用户栏目专家坐堂 → [讨论] 关于触发事件的计算顺序问题。


  共有17625人关注过本帖树形打印复制链接

主题:[讨论] 关于触发事件的计算顺序问题。

帅哥哟,离线,有人找我吗?
wcs
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
[讨论] 关于触发事件的计算顺序问题。  发帖心情 Post By:2009/8/4 23:26:00 [显示全部帖子]

1、对于datacolchanged事件,在手动输入数据时,是输入一个单元格的数值就执行一次事件代码,我想是这样的。

2、对于用数据填充器的 Filler  填充的数据,是不是也一样,填充一个单元格就执行一次事件代码?还是填充一行就执行一次代码?    请有经验的朋友答复一下。

我想,这个很重要的,涉及执行事件代码如何编写和执行的效率问题。

例如:

我用数据填充器的 Filler  填充进来了:第一列、第二列、第三列、第四列、第五列

我在这个表的datacolchanged事件中写了如下的代码:

Select Case e.datacol.name
    Case
 第一列、第二列、第三列
        代码1

    Case
 第四列、第五列
        代码2

End Select

如果是填充一个单元格就执行一次代码

那么我填充第一列的第一行时,要执行一次代码1
      填充第二列的第一行时,也要执行一次代码1
      填充第三列的第一行时,又要执行一次代码1

这样效率不是很低吗?

实际上,代码1需要第一列、第二列、第三列的值都变化了,才能组合计算出正确结果的。

谁能解释这个效率低下的问题?是我理解有误吗?

是不是整个一行的数据被填充了,才执行一次事件代码?这样的话效率要高些的。


 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/8/5 8:38:00 [显示全部帖子]

老大的意思是:

计算代码还是写在datacolchanged 事件中,但是设置一个开关。

等数据填充完毕了以后,再打开这个开关,事件代码再一次性统一执行!

看来并不复杂啊!


 回到顶部
帅哥哟,离线,有人找我吗?
wcs
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1039 积分:7450 威望:0 精华:0 注册:2008/8/31 22:52:00
  发帖心情 Post By:2009/8/5 9:07:00 [显示全部帖子]

老大的意思是:

开启那全局变量以后,那些事件的代码不会自动执行的,因为数据改变的行为已完成了。

这时需要用到RaiseDataColChanged方法重置列,才能再触发事件!

我的列很多,且要按顺序计算的。那就要一顺写RaiseDataColChanged了!

这下我有得受了!!


我看还是请老大在数据填充器中加一个属性,先关闭事件代码,填充完毕以后再打开事件并执行代码为好!!
[此贴子已经被作者于2009-8-5 9:08:56编辑过]

 回到顶部