以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  BeforeSelChange 事件在换行时循环执行四次的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75097)

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

--  作者:狐狸爸爸
--  发布时间:2015/9/28 8:47:00
--  

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

 

 

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

注意主窗口的标题变化


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


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

--  作者:大红袍
--  发布时间:2015/10/4 12:46:00
--  
上传例子说明
--  作者:lake163
--  发布时间:2015/10/4 12:52:00
--  
测试:删除所有事件,仍然不能解决问题;删除表间关联后就正常了,代码运行就一次。

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



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

--  作者:大红袍
--  发布时间:2015/10/7 11:40:00
--  
肯定相互影响了,做个例子上来。
--  作者:lake163
--  发布时间:2015/10/7 23:43:00
--  

进一步做了测试,发现:

1、与其他事件无关。

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

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

   

 

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


--  作者:大红袍
--  发布时间: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