Foxtable(狐表)用户栏目专家坐堂 → BeforeSelChange 事件在换行时循环执行四次的问题


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

主题:BeforeSelChange 事件在换行时循环执行四次的问题

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


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
BeforeSelChange 事件在换行时循环执行四次的问题  发帖心情 Post By:2015/9/26 21:19:00 [只看该作者]

    根据帮助指南,在BeforeSelChange事件中添加了一段代码。为了测试代码运行效率,加入了运行时间的测试。发现:
在一行中的不同单元格移动时,触发事件运行一次; 但如果移动到另一行的单元格中,则触发该事件运行代码四次。
(如果改在CurrentChanged 中,则会运行七次)
   请问是什么原因啊?
[此贴子已经被作者于2015/9/26 21:37:40编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/9/28 8:47:00 [只看该作者]

这个例子证明只执行了一次:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目92.table

注意主窗口的标题变化


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


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
  发帖心情 Post By:2015/10/4 12:18:00 [只看该作者]

谢谢!
   在老师提供的测试表格中,相关代码不论是放在表的BeforeSeleChange、AfterSeleChang事件中,还是全局表事件中,确实运行一次。
   奇怪的是:
   我将这段测试代码放到我的全局表BeforeSeleChange事件中,而且删除了程序中所有的事件代码,不同行中移动,数字增加仍然无规律,最多可以到6。


[此贴子已经被作者于2015/10/4 12:46:37编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/4 12:46:00 [只看该作者]

上传例子说明

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


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
  发帖心情 Post By:2015/10/4 12:52:00 [只看该作者]

测试:删除所有事件,仍然不能解决问题;删除表间关联后就正常了,代码运行就一次。

但在老师提供的测试表中(空白表),建立关联,就没有问题。



[此贴子已经被作者于2015/10/4 13:11:34编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/7 11:40:00 [只看该作者]

肯定相互影响了,做个例子上来。

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


加好友 发短信
等级:童狐 帖子:276 积分:2971 威望:0 精华:0 注册:2010/9/20 11:21:00
  发帖心情 Post By:2015/10/7 23:43:00 [只看该作者]

进一步做了测试,发现:

1、与其他事件无关。

2、以下情况代码正常运行一次:无关联时,或虽有关联但关联表中无数据时,或者关联表虽有数据但不显示时。

3、当关联表中有数据且显示时,测试代码运行次数不确定,暂未发现有什么规律。

   

 

因表中数据未整理好,暂无法上传。


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/10/8 9:53:00 [只看该作者]

做个例子看看。变通办法,你可以做个时间判断,多次触发就不执行,如

 

static ptime As Date = Nothing

Dim sp As TimeSpan = Date.now - ptime
If sp.TotalSeconds <= 1 Then
    return '一秒内多次触发无效
Else
    ptime = Date.now
End If


 回到顶部