VBA控件教程:向窗体添加事件

2015-06-04 12:38 阅读 52 次 评论关闭

下面的循序渐进的过程显示了如何给窗体创建自定义事件。要试用此练习,可打开一个新的“标准 EXE”工程,并按如下面步骤去做:

要将事件添加到 Form1 中,请按照以下步骤执行:

  1. “工程”菜单上,选择“添加类模块”,将类模块添加到工程中。将下面的代码放置到 Class1 的“声明”部分:
    Public Property Get Form1() As Form1
    Set Form1 = mForm1
    End Property
    
    Public Property Set Form1(ByVal NewForm1 As Form1)
    Set mForm1 = NewForm1
    End Property
    

    如果使用过程视图,则不能同时查看属性过程。单击代码窗口左下角的全模块视图按钮,转换到全模块视图。单击过程视图旁边的过程视图按钮,可以返回过程视图。(将鼠标在各个按钮上移动一下,看看哪个是哪个。)

  2. 将下面的代码添加到 Form1 的“声明”部分:
    Event Gong
    Private mc1 As Class1
    

    因为已经创建了 Class1,所以创建 Class1 类型的变量是可能的。这个过程要在 Form1 和 Class1 之间切换几次,因为在模块中的操作步骤,需要首先给另一个模块添加代码。

  3. 返回 Class1,并将下面的代码添加到“声明”部分。
    Private WithEvents mForm1 As Form1
    

    就象在“向类中添加事件”所讨论的那样,WithEvents 关键字意味着 Form1 的这个实例是与事件相关联的。注意,这一步成为可能,要到已经创建了 Gong 事件。

  4. 在 Class1 的“代码”窗口上的左边“对象”下拉菜单上,选择“mForm1”来为 Gong 事件得到事件过程。将下面的代码添加到该事件过程中:
    Private Sub mForm1_Gong()
    MsgBox "Gong!"
    End Sub
    
  5. 返回 Form1。在“对象”下拉菜单上,选择“添加窗体”,在右边“过程”下拉菜单上,选择“加载”。将下面的代码添加到事件过程中:
    Private Sub Form_Load()
    Set mc1 = New Class1
    Set mc1.Form1 = Me
    End Sub
    

    第一行创建了一个 Class1 对象,而第二行则将对 Form1 (也就是说,是 Me - 在 Form1 的“代码窗口中,Me 指的是 Form1;而在 Class1 的“代码”窗口中,Me 指的是 Class1)的引用赋给其 Form1 属性(在第一步所创建的)。

  6. 将三个文本框放置到 Form1 上。在“对象”“过程”下拉菜单上,依次为每个控件选择“Change”事件过程,并将相同代码行放置到它们中的每个里面:
    Private Sub Text1_Change()
    RaiseEvent Gong
    End Sub
    

    每次当某个文本框的内容改变时,都将引发窗体的 Gong 事件。

  7. 按 F5 键,运行工程。每次在其中一个文本框内键入字符时,信息框都将响铃。这是很令人恼火的,但它显示了怎样将一个事件添加到窗体中,然后从几个控件得到通知。

就象在上面的“声明和引发事件”所述,可以将参数添加到事件中。例如,可能将控件名—或者更好是用对控件的引用—传递给事件的接收者。

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:VBA控件教程:向窗体添加事件 | 猎微网
分类:VBA 标签:, , ,

评论已关闭!