当文本框或组合框的文本部分的内容更改时,Change 事件发生。在选项卡控件中从一页移到另一页时,该事件也会发生。
Private Sub object_Change()
Object 控件的名称。
该事件的示例包括直接在文本框或组合框中输入一个字符,或者使用宏或 Visual Basic 更改该控件的 Text 属性设置。
? | 使用宏或 Visual Basic 设置控件的值并不会触发控件的 Change 事件。必须直接将数据键入控件,或设置控件的 Text 属性。 |
要在该事件发生时运行宏或事件过程,请将 OnChange 属性设置为宏的名称或 [事件过程]。
在 Change 事件发生时,通过运行宏或事件过程,可以调整控件中的数据显示。也可以在一个控件中显示数据或公式,而在另一个控件中显示结果。
当计算控件中的值更改时,Change 事件不会发生。
注释 Change 事件可能导致级联事件发生。当为响应控件的 Change 事件而运行的宏或事件过程改变了控件的内容时,这种情况便会发生。例如,当更改决定控件值的属性设置,如文本框的 Text 属性时。为避免级联事件发生,应谨记下面两点:
? | 如果可能,请避免将 Change 宏或事件过程附加到更改控件内容的控件上。 |
? | 避免创建两个或多个含有相互影响的 Change 事件的控件,例如,两个互相更新的文本框。 |
如果使用键盘更改文本框或组合框中的数据,除引起 Change 事件这类的控件事件发生之外,还将导致键盘事件的发生。例如,如果移到一个新记录并在记录的文本框中键入一个 ANSI 字符,则下列事件将按如下顺序发生:
KeyDown → KeyPress → BeforeInsert → Change → KeyUp
文本框或组合框控件的 BeforeUpdate 和 AfterUpdate 事件,发生在输入新数据或在控件中更改了数据后,又移到另一个控件(或单击“记录”菜单上的“保存记录”)之后,因而也在控件的所有 Change 事件之后。
在 LimitToList 属性设为“是”的组合框中,当输入了列表值以外的值,并试图移到另一个控件或保存记录之后,将发生 NotInList 事件。它发生在组合框的所有 Change 事件之后。在这种情况下,组合框的 BeforeUpdate 和 AfterUpdate 事件不会发生,因为 Microsoft Access 不接受非列表值。