为了提高系统效率,在默认情况下,只有
CurrentChanged、PositionChanged、AfterSelChange、AfterSelRangeChange四个全局表事件对所有表有效, 而其它全局表事件即使设置了代码,也不会发生作用。
当然这并不意味着其它全局表事件永久无效,只是这些表事件需要一个“开关”去开启。
DataTable有一个GlobalHandler属性,该属性包括以下子属性,对应着每一个全局表事件:
AfterCheckRow
AfterDragColumn
AfterEdit
AfterFilter
AfterFreezeColumn
AfterLoad
AfterLockDataRow
AfterMoveRow
AfterResizeColumn
AfterResizeRow
AfterSelChange
AfterSelRangeChange
AfterSort
AfterUnlockDataRow
Click
BeforeAddDataRow
BeforeAttachFile
BeforeCheckRow
BeforeDeleteDataRow
BeforeDragColumn
BeforeDrawRow
BeforeFilter
BeforeFreezeColumn
BeforeLoad
BeforeLockDataRow
BeforeResizeColumn
BeforeResizeRow
BeforeSaveDataRow
BeforeSelChange
BeforeSelRangeChange
BeforeShowContextMenu
BeforeSort
BeforeUnlockDataRow
CellButtonClick
ChangeEdit
CurrentChanged
DataColChanged
DataColChanging
DataRowAdded
DataRowAdding
DataRowDeleted
DataRowDeleting
DoubleClick
DrawCell
KeyDown
KeyDownEdit
KeyPressEdit
KeyUp
KeyUpEdit
PositionChanged
PrepareEdit
SetupEditor
StartEdit
ValidateEdit
这些属性都是逻辑型,如果要使某个全局表事件对该DataTable有效,只需将对应的属性设为True即可。
这些属性中,只有CurrentChanged、PositionChanged、AfterSelChange、AfterSelRangeChange的默认值为True,这也就是为什么默认只有这四个全局表事件有效的原因。
例如要使全局表事件AfterEdit事件对表A有效,只需:
DataTables(
"表A").GlobalHandler.AfterEdit = True
要使全局表事件AfterEdit事件对所有表有效,只需:
For Each
dt As DataTable In DataTables
dt.GlobalHandler.AfterEdit = True
Next