全局表事件
	在项目属性中,除了可以设置项目事件,还可以设置全局表事件。
	全局表事件对所有的表有效,包括通过代码增加的临时表。
	全局表事件的e参数和对应的表事件完全一样。
	
	为什么要提供全局表事件呢? 我们用一个最简单的例子说明。
	假定我们需要在状态栏,显示当前行位置,以及总的行数,只需在全局表事件PositionChanged中加入代码:
StatusBar.Message1 = "第" & (e.Table.Position + 1) & "行,共" & e.Table.Rows.Count & "行"
	由于全局表事件对所有表有效,所以不管我们选择那个表,状态栏都能显示当前行位置以及总的行数。
	如果没有全局表事件,我们就需要在每个表的PositionChanged加入上述代码,如果有几十个表,就的加入几十次,这将给维护带来极大的不便。
	如果你喜欢,你甚至可以不使用表事件,而全部采用全局表事件。
	由于全局表事件对所有表有效,而不同的表可能有不同的处理逻辑,需要不同的事件代码,所以通常需要在全局表事件中判断表名:
Select Case
e.Table.Name或者:
Select Case 
	e.DataTable.Name
	
    Case "表A"
        
	'针对表A的代码
    Case "表B"
        
	'针对表B的代码
    Case "表C"
        
	'针对表C的代码
	End Select
	重要提示:
	
	为了提高系统效率,在默认情况下,只有CurrentChanged、PositionChanged、AfterSelChange、AfterSelRangeChange四个全局表事件对所有表有效,
	而其它全局表事件即使设置了代码,也不会发生作用。
	当然这并不意味着其它全局表事件永久无效,只是这些表事件需要一个“开关”去开启。
	DataTable有一个GlobalHandler属性,该属性包括以下子属性,对应着每一个全局表事件:
AfterCheckRow
	AfterDragColumn
	AfterEdit
	AfterFilter
	AfterFreezeColumn
	AfterLoad
	AfterMoveRow
	AfterResizeColumn
	AfterResizeRow
	AfterSelChange
	AfterSelRangeChange
	AfterSort
	BeforeAddDataRow
	BeforeAddFile
	BeforeAttachFile
	BeforeCheckRow
	BeforeDeleteDataRow
	BeforeDragColumn
	BeforeDrawRow
	BeforeFilter
	BeforeFreezeColumn
	BeforeLoad
	BeforeOpenFile
	BeforeResizeColumn
	BeforeResizeRow
	BeforeSaveDataRow
	BeforeSelChange
	BeforeSelRangeChange
	BeforeShowContextMenu
	BeforeSort
	CellButtonClick
	ChangeEdit
	Click
	CurrentChanged
	DataColChanged
	DataColChanging
	DataRowAdded
	DataRowAdding
	DataRowDeleted
	DataRowDeleting
	DataRowLockedChanged
	DataRowLockedChanging
	DoubleClick
	DrawCell
	KeyDown
	KeyDownEdit
	KeyPressEdit
	KeyUp
	KeyUpEdit
	PositionChanged
	PrepareEdit
	SetupEditor
	StartEdit
	ValidateEdit
	MouseEnterCell
	MouseLeaveCell
	MouseHoverCell
这些属性都是逻辑型,如果要使某个全局表事件对该DataTable有效,只需将对应的属性设为True即可。
	这些属性中,只有CurrentChanged、PositionChanged、AfterSelChange、AfterSelRangeChange的默认值为True,这也就是为什么默认只有这四个全局表事件有效的原因。
例如要使全局表事件AfterEdit事件对表A有效,只需:
DataTables(
"表A").GlobalHandler.AfterEdit = True要使全局表事件AfterEdit事件对所有表有效,只需:
For Each
dt As DataTable In DataTables应用实例
假定项目中有一个名为“录入员”的用户,希望该用户只能修改新增加的行,不能修改已经保存的行,且这个限制对所有表有效。
首先我们应该在全局表事件PrepareEdit加入代码:
If e.Row.DataRow.RowState 
<> DataRowState.Added 
Then
    
If User.Name = 
"录入员"
        e.Cancel = 
True
    
End 
If
End 
If
然后在项目事件Initialize加入代码:
For 
Each dt 
As 
DataTable 
In 
DataTables
    dt.GlobalHandler.PrepareEdit
= 
True
Next
这样我们的任务就已经完成,如果没有全局表事件,这将是一个很繁琐的任务,特别是表很多的时候。