下面的循序渐进的过程显示了如何给窗体创建自定义事件。要试用此练习,可打开一个新的“标准 EXE”工程,并按如下面步骤去做:
要将事件添加到
Form1 中,请按照以下步骤执行:
Public Property Get Form1() As Form1
Set Form1 = mForm1
End Property
Public Property Set Form1(ByVal NewForm1 As Form1)
Set mForm1 = NewForm1
End Property
如果使用过程视图,则不能同时查看属性过程。单击代码窗口左下角的“全模块视图”按钮,转换到全模块视图。单击过程视图旁边的“过程视图”按钮,可以返回过程视图。(将鼠标在各个按钮上移动一下,看看哪个是哪个。)
Event Gong
Private mc1 As Class1
因为已经创建了 Class1,所以创建 Class1 类型的变量是可能的。这个过程要在 Form1 和 Class1 之间切换几次,因为在模块中的操作步骤,需要首先给另一个模块添加代码。
Private WithEvents mForm1 As Form1
就象在“向类中添加事件”所讨论的那样,WithEvents 关键字意味着 Form1 的这个实例是与事件相关联的。注意,这一步成为可能,要到已经创建了 Gong 事件。
Private Sub mForm1_Gong()
MsgBox "Gong!"
End Sub
Private Sub Form_Load()
Set mc1 = New Class1
Set mc1.Form1 = Me
End Sub
第一行创建了一个 Class1 对象,而第二行则将对 Form1 (也就是说,是 Me - 在 Form1 的“代码”窗口中,Me 指的是 Form1;而在 Class1 的“代码”窗口中,Me 指的是 Class1)的引用赋给其 Form1 属性(在第一步所创建的)。
Private Sub Text1_Change()
RaiseEvent Gong
End Sub
每次当某个文本框的内容改变时,都将引发窗体的 Gong 事件。
就象在上面的“声明和引发事件”所述,可以将参数添加到事件中。例如,可能将控件名—或者更好是用对控件的引用—传递给事件的接收者。