vb事件说明 Event使用方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序运行结果如下图所示: 程序运行结果如下图所示: 设计步骤如下: 设计步骤如下:
在Rectangle类代码窗口中所有过程之外使用Event Rectangle类代码窗口中所有过程之外使用 类代码窗口中所有过程之外使用Event 语句声明Warning事件 事件。 语句声明Warning事件。 Public Event Warning() Rectangle类的 类的Area方法过程中添加下列代码 在Rectangle类的Area方法过程中添加下列代码 请注意带有下划线的部分): (请注意带有下划线的部分): Public Event Warning() 声明类中包含的事件 Public Function Area() As Integer 使用Function创建 创建Area()函数方法 使用Function创建Area()函数方法
2自定义事件
前面介绍了向类中添加属性和方法的操作,通过 前面介绍了向类中添加属性和方法的操作, 属性和方法,可以与对象进行交互。 属性和方法,可以与对象进行交互。但是这种交互 式是单方面的, 式是单方面的,对象只能被动地改变属性值或被调 用方法。 用方法。通过向类中添加自定义事件可以使对象具 有与应用程序进行交互的能力。 有与应用程序进行交互的能力。 事件和属性, 事件和属性,方法最大区别在于属性和方法对应 的代码是类模块的设计者预先现象设计好的, 的代码是类模块的设计者预先现象设计好的,类模 块的使用者调用什么方法, 块的使用者调用什么方法,系统就自动调用相应的 代码。而对于事件, 代码。而对于事件,类模块的设计者只能决定何时 激发事件, 激发事件,对于事件本身应该执行一些什么操作是 有类模块的使用者来决定的。 有类模块的使用者来决定的。
可以在 类模块代码窗口中左边对象列表中选择 “Class”,右边事件列表中选择对应的事件,选择 ,右边事件列表中选择对应的事件, 后系统会自动创建该事件的代码框架。 后系统会自动创建该事件的代码框架。 在类Rectangle事件中可利用 事件中可利用Initialize事件过 在类 事件中可利用 事件过 程对矩形的宽和高进行初始化, 程对矩形的宽和高进行初始化,指定默认的矩形宽 为10,高为 ,事件过程代码如下: ,高为6,事件过程代码如下: Public Sub Class_ Initialize() clsWidth=10 clsHeight=6 End Sub 当由类产生一个对象时, 当由类产生一个对象时,此对象首先要自动执行 Initialize事件,使得Rectangle类中对应的属性得到 事件,使得 类中对应的属性得到 事件 初始值。 初始值。
例如对于文本框控件TextBox来说, 例如对于文本框控件TextBox来说,它 来说 SetFocus方法是预先设计好的 方法是预先设计好的, 的SetFocus方法是预先设计好的,而它的 KeyPress事件是有 KeyPress事件是有TextBox的使用者自行处 事件是有TextBox的使用者自行处 理的, 理的,使用者决定当该事件触发时执行什么 操作。 操作。可以看出对象的属性和方法的具体实 现步骤均被封装在对象的内部, 现步骤均被封装在对象的内部,只有事件可 以被发送到对象的外部。 以被发送到对象的外部。对象可以产生不同 事件, 事件,应用程序根据不同的事件做出不同的 响应。 响应。
1 响应默认事件
由系统创建的类模块默认事件有两个: 由系统创建的类模块默认事件有两个:Initialize 初始化) 结束)。 )。前者在对象建立时 (初始化)和Terminate(结束)。前者在对象建立时 被激发,领先于其他任何设置属性或执行方法的动作, 被激发,领先于其他任何设置属性或执行方法的动作, 后者则是在对象结束时激发。 后者则是在对象结束时激发。通常 Initialize事件被应 用与类属性的初始化, 用与类属性的初始化, Terminate事件则往往用来处理 类模块的结尾工作。 类模块的结尾工作。
Area=clsWidth*clsHeight 方法的行为是返回宽× 面积) 方法的行为是返回宽×高(面积)值 矩形面积过小或过大时触发Warning事件 矩形面积过小或过大时触发WarniΒιβλιοθήκη Baidug事件
If Area<=6Or Area>=100Then RaisEvent Warning
End Function 修改应用程序代码如下: 修改应用程序代码如下: 由于Rectangle类的实例 类的实例myobj 由于Rectangle类的实例myobj 需要在多个过程 中使用,故需要在“通用”段进行声明, 中使用,故需要在“通用”段进行声明,并将声明 语句改为: 语句改为:
MsgBox “矩形的面积太小或太大!”,48,“警 “矩形的面积太小或太大 矩形的面积太小或太大! 48, 告”
End Sub 编写时可在代码窗口左侧下拉列表框中会自动出 事件名称, 现Warning 事件名称,且系统会自动创建事件过程 的框架
13.3.4响应默认事件和自定义事件 响应默认事件和自定义事件
属性和方法属于“入端接口” 属性和方法属于“入端接口”,它是从对象外面被 调用的。但是事件却在对象的内部产生, 调用的。但是事件却在对象的内部产生,在其他地方进 行处理,故被称为“出端接口” 行处理,故被称为“出端接口”。 类支持的事件分为“默认事件” 自定义事件” 类支持的事件分为“默认事件”和“自定义事件” 两种。 类创建后由系统自动提供的事件。 两种。默认事件是指 类创建后由系统自动提供的事件。 而自定义事件是指类创建后由用户根据具体的需要再类 模块中定义的事件。 模块中定义的事件。
在类模块中添加自定义事件需要完成以下两 项工作: 项工作:
1)在类模块的声明段使用Event语句声明类中的公 在类模块的声明段使用Event语句声明类中的公 共事件。 共事件。 2)在类模块代码的适当位置使用RaiseEvent语句 在类模块代码的适当位置使用RaiseEvent语句 激发该事件。 激发该事件。 [例13-4]在前面创建的Rectangle类中添加一个 13-4]在前面创建的 在前面创建的Rectangle类中添加一个 Warning事件 当计算出来的矩形面积小于等于6 Warning事件,当计算出来的矩形面积小于等于6 事件, 或大于等于100时触发该事件 时触发该事件。 或大于等于100时触发该事件。要求在应用程序编 写事件处理代码,显示一个信息框提醒用户注意。 写事件处理代码,显示一个信息框提醒用户注意。
Dim WithEvents myboj As Rectangle ‘使用 WithEvents 关键字,表示可以使用对象的事件 关键字,
编写myobj 对象的Warning 事件代码如下: 编写myobj 对象的Warning 事件代码如下: Private Sub myobj_Warning()