一、DoEvents 会将控制权传给操作系统,让系统可以响应其它事件
For i=1 to 9999999999
DoEvents '//转移控制权 让系统可以响应其它事件
Next
二、RaiseEvent 触发类、窗体或文档中在模块级声明的事件
如果在事件被引发的模块内该事件没有被声明,就会发生一个错误。
三、WithEvents 声明一个对象时,可以使用该对象的事件
比如:Dim WithEvents 对象变量 As 类名
这种用法是加载该类的事件,Withevents 之后就能在代码编辑窗看到该类的事件了(如果有的话)。因为类不像控件,双击控件就可以进入事件编辑。
使用 WithEvents 变量时,应该注意下面这些限制条件:
1.WithEvents变量不能是派生对象变量。也就是说,不能把它声明为As Object—当声明该变量时必须指定类名。
2.不能把 WithEvents 变量声明为As New。必须明确地创建事件源对象,并将它赋给WithEvents变量。
3.不能在标准模块中声明 WithEvents 变量。只能在类模块、窗体模块以及其它定义类的模块中声明。
不能创建WithEvents 变量数组。
例:
'在类定义模块中:Class1
Option Explicit
Public Event OnChanged()
Public Sub Refresh()
RaiseEvent OnChanged
End Sub
'在窗体中
Option Explicit
Private WithEvents eMyObject As Class1
Private Sub Form_Load()
Set eMyObject = New Class1
End Sub
Private Sub Command1_Click()
eMyObject.Refresh
End Sub
Private Sub eMyObject_OnChanged()
MsgBox "类事件触发成功!"
End Sub