在vb的类中声明事件

【资料】

1.Event 语句

定义用户自定义的事件。

语法

[Public] Event procedurename [(arglist)]

Event 语句包含下面部分:

部分 描述

Public 可选的。指定该 Event 在整个工程中都是可见的。缺省情况下 Events 类型是 Public。应注意,事件只能在所声明的模块中产生。

procedurename 必需的。事件的名称;遵循标准的变量命名约定。

arglist 参数的语法及语法的各个部分如下:

[ByVal | ByRef] varname[( )] [As type]

部分 描述

ByVal 可选的。表示该参数是按值传递的。

ByRef 可选的。表示该参数是按地址传递的。ByRef 是 Visual Basic 的缺省设置。

varname 必需的。代表要传递给过程的参数变量的名称;遵循目前尚不支持)、Date、String(只支持变长)、Object、Variant、用户定义类型或对象类型。

说明

事件被声明之后,就可以使用 RaiseEvent 语句来产生该事件。如果在标准模块中出现 Event 声明,就会产生语法错误。不能声明带返回值的事件。在下面的代码段中,给出了声明事件和产生事件的典型事件:

'在类模块的模块级中声明一个事件

Event LogonCompleted (UserName as String)

Sub

RaiseEvent LogonCompleted("AntoineJan")

End Sub

注意 可以象声明过程的参数一样来声明事件的参数,但有以下不同:事件不能有带命名参数、Optional 参数、或者 ParamArray 参数。事件没有返回值。

2.RaiseEvent 语句

引发在一个类、窗体、或者文档中的模块级中声明的一个事件。

语法

RaiseEvent eventname [(argumentlist)]

必需的 eventname 是在模块 中声明的,并且符合 Basic 变量命名约定的一个事件的名称。

RaiseEvent 语句的语法有如下部分:

部分 描述

Eventname 必需的。所引发的事件的名称。

Argumentlist 可选的。用逗号分隔的变量、数组,或者表达式的列表。argumentlist 必须用圆括号括起来。如果没有参数,则圆括号必须被忽略。

说明

如果在事件被引发的模块内该事件没有被声明,就会发生一个错误。下面这个程序片段说明了一个事件的声明以及一个引发该事件的过程。

' 在类模块的模块级声明一个事件

Event LogonCompleted (UserName as String)

Sub

' 引发该事件。

RaiseEvent LogonCompleted ("AntoineJan")

End Sub

如果在 RaiseEvent 中该事件没有参数,包括空的圆括号,则对该事件的调用就会导致一个错误。不能使用 RaiseEvent 来引发在模块中没有明确定义的事件。例如,如果一个窗体有一个 Click 事件,则不能使用 RaiseEvent 来引发该窗体的 Click 事件。如果在窗体模块 中声明了一个 Click 事件,则它将覆盖窗体自己的 Click 事件。仍然可以使用调用该事件的正常语法来调用该窗体的 Click 事件,但是不能使用 RaiseEvent 语句。

事件的引发是根据连接建立的顺序来进行的。因为事件可以有 ByRef 参数,所以后来连接的进程可能接收已经被一个更早的事件处理程序更改的参数。

3.WriteProperties 事件

当保存对象的实例时,发生该事件。该事件通知对象此时需要保存对象的状态,以便将来可恢复该状态。大多数情况下,对象的状态仅包括属性值。

语法

Sub object_WriteProperties(pb As PropertyBag)

WriteProperties 事件的语法包含下面部分:

部分 描述

object 对象表达式,其值为“应用于”列表中的对象。

pb 要写入数据的类型为 PropertyBag 类的对象。

说明

WriteProperties 事件发生时,object 的创建者为每个要保存的数据调用 PropertyBag 对象的WriteProperty 方法,来保存 object 的状态。

注意 pb 属性包可能与传递给最近的 ReadProperties 事件的 pb 不同。

在 object 实例的生存期内,WriteProperties 事件可能发生多次。

5.要触发在类模块中定义的事件你必须在声明中添加WithEvent语句!

否则你无法为事件编写事件处理模块!

就像这样!

Dim WithEvent A As Obj

Set a=New Obj