先来捋一捋
1、先点击“重载子表”,触发“重载子表”的click事件
2、“重载子表”的click事件加载表A,表A加载后会触发表格的afterload事件,很明显,afterload事件必须等待表格加载完毕才能触发,所以并不是马上触发的,我估计是使用回调机制触发(类似weui里ajax函数submitAjaxForm的回调参数用法),而按照.net的机制,事件不是异步的,新的事件必须等待之前的事件执行完毕,也就是afterload事件必须等待“重载子表”的click事件执行完毕。
3、“重载子表”的click事件加载表A后紧接着就执行按钮“重载id为2的子表”的代码,注意performClick会马上执行按钮2的代码,而不是等待“重载子表”的click事件执行完毕才会执行,也就是这时“重载子表”的click事件的代码还不算执行完毕,同时表格的afterload事件也还在等待执行中。等“重载子表”的所有代码执行完毕后,“重载子表”的click事件才算执行完毕,才会执行表格的afterload事件
如果要达到效果,需要延迟执行按钮2的代码,利用计时器事件,下面用法计时器事件触发会在表格afterload之后
窗口timetick事件
e.Form.TimerEnabled = False
e.Form.Controls("Button2").performClick
“重载子表”的click事件
With DataTables("表A")
.LoadFilter = ""
.Load
End With
e.Form.TimerInterval = 100
e.Form.TimerEnabled = True