可能已经注意到,在使用 WithEvents 变量的方式和处理某个窗体上控件所产生的事件的方式这二者之间,存在某些相似之处。在两种情况下,当在代码窗口右边下拉菜单上选择事件时,都将得到包含事件正确参数的事件过程。
事实上,确切地说二者机制是相同的。控件是作为窗体类的属性来处理的,并且这个属性的名字,就是在“属性”窗口中赋给控件 Name 属性的那个值。
看起来似乎有一个与控件同名的 Public 模块级的变量,而且所有控件的事件过程名,都以这个变量的名字为起始,就象 WithEvents 变量情况下,它们都以 WithEvents 变量名为起始一样。
通过将 mWidget
变量声明为 Public 而不是 Private,可以很容易地看到这一点。这样做时,mWidget
将作为 Form1 的一种属性出现在“对象浏览器”中,象在另一种情况下,控件出现在窗体上一样。
两种情况的不同之处在于:当创建窗体时,Visual Basic 自动创建该窗体上所有控件的实例,而在另一种情况下,必须创建自己的类(这些类的事件是想要处理的)的实例,并且应把那些对象的引用赋给 WithEvents 变量。
详细信息 可以将自己的事件添加到窗体中,如下面“向窗体添加事件”所述。