数据库对象的事件顺序

重要:  本文是由机器翻译的,请参阅免责声明。请在 此处 中查找本文的英文版本以便参考。

单一操作(例如从一个对象上的控件移动到另一控件)可以触发多个不同的事件,这些事件按特定顺序发生。了解事件发生的时间和顺序非常重要,因为这会影响宏或事件过程的运行方式和运行时间。例如,如果有两个事件过程将按特定顺序运行,则需要确保关联的事件以相同顺序发生。

本文内容

窗体上控件事件的顺序

窗体上记录事件的顺序

窗体和子窗体事件的顺序

击键和鼠标单击事件的顺序

报表和报表区域事件的顺序

窗体上控件事件的顺序

将焦点移动到控件以及在控件中更改和更新数据时,窗体上会发生控件事件。

注意: Microsoft Office Access 在 Visual Basic 编辑器中显示的事件名称与在属性表和“宏生成器”中显示的名称略有不同。例如,窗体的属性表和“宏生成器”中名为“获得焦点”(On Got Focus) 的事件在 Visual Basic 编辑器中名为 GotFocus。本文中的示例对事件名称使用 Visual Basic for Applications (VBA) 格式。

将焦点移动到控件

将焦点移动到窗体上的控件时(例如,打开包含一个或多个活动控件的窗体,或将焦点移动到同一窗体上的其他控件),进入获得焦点事件将按如下顺序发生:

进入 箭头 获得焦点

打开窗体时,进入获得焦点事件将在与打开窗体关联的事件(例如,打开激活成为当前)后发生,如下所示:

打开(窗体) 箭头 激活(窗体) 箭头 成为当前(窗体) 箭头 进入(控件) 箭头 获得焦点(控件)

当焦点离开窗体上的控件时(例如,关闭包含一个或多个活动控件的窗体,或将焦点移动到同一窗体上的其他控件),退出失去焦点事件将按如下顺序发生:

退出 箭头 失去焦点

关闭窗体时,退出失去焦点事件将在与关闭窗体关联的事件(例如卸载停用关闭)前发生,如下所示:

退出(控件) 箭头 失去焦点(控件) 箭头 卸载(窗体) 箭头 停用(窗体) 箭头 关闭(窗体)

更改和更新控件中的数据

在窗体上的控件中输入或更改数据,然后将焦点移动到另一控件时,将发生更新前更新后事件:

更新前 箭头 更新

其值已更改的控件的退出失去焦点事件在更新前更新后事件后发生:

更新前 箭头 更新后 箭头 退出 箭头 失去焦点

更改文本框中的文本或组合框的文本框部分中的文本时,将发生更改事件。只要控件的内容发生更改,此事件就会在将焦点移动到另一控件或记录之前(因此,在更新前更新后事件发生之前)发生。对于在文本框或组合框的文本框部分中按下的每个键,都会依序发生下列事件:

键按下 箭头 击键 箭头 有脏数据时 箭头 更改 箭头 键释放

如果在组合框列表中未列出的组合框中输入一个值,然后尝试将焦点移动到另一个控件或记录,则将发生不在列表中事件。不在列表中事件发生在组合框的键盘事件和更改事件后,但发生在任何其他控件或窗体事件前。如果组合框的“限于列表”属性设置为“”,则将在不在列表中事件后立即发生该窗体的出错事件:

键按下 箭头 击键 箭头 有脏数据时 箭头 更改 箭头 键释放 箭头 不在列表中 箭头 出错

返回页首

窗体上记录事件的顺序

在将焦点移动到其他记录、更新记录中的数据、删除现有记录或创建新记录时,窗体上会发生记录事件。

将焦点移动到记录并更新记录中的数据

将焦点移动到窗体上的现有记录,在记录中输入或更改数据,然后将焦点移动到另一记录时,将依序发生下列窗体事件:

成为当前(窗体) 箭头 更新前(窗体) 箭头 更新后(窗体) 箭头 成为当前(窗体)

在离开其数据已发生更改的记录后,对于具有焦点的控件,将在输入下一记录之前发生退出失去焦点事件。这些事件发生在窗体的更新前更新后事件之后,如下所示:

更新前(窗体) 箭头 更新后(窗体) 箭头 退出(控件) 箭头 失去焦点(控件) 箭头 记录退出(窗体) 箭头 成为当前(窗体)

在窗体上的控件之间移动焦点时,将发生针对每个控件的事件。例如,执行以下操作时,会依序发生下列事件:

  • 打开窗体,并更改控件中的数据:

    成为当前(窗体) 箭头 进入(控件) 箭头 获得焦点(控件) 箭头 更新前(控件) 箭头 更新后(控件)

  • 将焦点移到另一控件:

    退出(控件 1) 箭头 失去焦点(控件 1) 箭头 进入(控件 2) 箭头 获得焦点(控件 2)

  • 将焦点移动到另一记录:

    更新前(窗体) 箭头 更新后(窗体) 箭头 退出(控件 2) 箭头 失去焦点(控件 2) 箭头 记录退出(窗体) 箭头 成为当前(窗体)

删除记录

删除记录时,将发生下列窗体事件,并且 Microsoft Office Access 会显示一个对话框,请求确认删除:

删除 箭头 确认删除前 箭头 确认删除后

如果取消确认删除前事件,则不会发生确认删除前确认删除后事件,也不会显示对话框。

创建新记录

将焦点移动到窗体上的新(空白)记录,然后通过在控件中键入数据创建新记录时,将依序发生下列事件:

成为当前(窗体) 箭头 进入(控件) 箭头 获得焦点(控件) 箭头 插入前(窗体) 箭头 插入后(窗体)

窗体上的控件和新记录的更新前更新后事件发生在插入前事件之后,插入后事件之前。

返回页首

窗体和子窗体事件的顺序

打开或关闭窗体、在窗体之间移动,或者处理窗体或子窗体上的数据时,将发生窗体事件。

打开和关闭窗体

打开窗体时,将依序发生下列窗体事件:

打开 箭头 加载 箭头 调整大小 箭头 激活 箭头 成为当前

如果窗体上没有活动控件,则窗体的获得焦点事件发生在激活事件之后,成为当前事件之前。

关闭窗体时,将依序发生下列窗体事件:

卸载 箭头 停用 箭头 关闭

如果窗体上没有活动控件,则窗体的失去焦事件发生在卸载事件之后,停用事件之前。

在窗体之间移动

在两个打开的窗体之间切换时,第一个窗体将发生停用事件,第二个窗体将发生激活事件:

停用(窗体 1) 箭头 激活(窗体 2)

从窗体切换到 Access 中的另一对象选项卡时,该窗体也会发生停用事件。但是,在切换到对话框、“弹出方式”属性设置为“”的窗体或其他程序中的窗口时,不会发生停用事件。

注意:  如果将焦点移动到已打开的窗体,那么即使是通过执行打开窗体操作将焦点移动到该窗体,也不会发生打开事件。

处理窗体上的数据

在窗体中的记录间移动和更改数据时,将发生窗体事件和控件事件。例如,首次打开窗体时,将依序发生下列事件:

打开(窗体) 箭头 加载(窗体) 箭头 调整大小(窗体) 箭头 激活(窗体) 箭头 成为当前(窗体) 箭头 进入(控件) 箭头 获得焦点(控件)

同样,关闭窗体时,将依序发生下列事件:

Exit(控件) 箭头 LostFocus(控件) 箭头 Unload(窗体) 箭头 Deactivate(窗体) 箭头 Close(窗体)

如果更改了控件中的数据,则将在控件的退出事件之前发生控件和窗体的更新前更新后事件。

使用子窗体

打开包含子窗体的窗体时,将在加载主窗体前先加载子窗体及其记录。因此,子窗体及其控件的事件(例如打开成为当前进入获得焦点)在窗体事件之前发生。但是,不会发生子窗体激活事件。因此,打开主窗体仅触发主窗体激活事件。

同样,关闭包含子窗体的窗体时,将在卸载该窗体后卸载子窗体及其记录。不会发生子窗体停用事件。因此,关闭主窗体仅触发主窗体停用事件。控件、窗体和子窗体事件按下列顺序发生:

  1. 子窗体控件事件(例如,退出失去焦点

  2. 窗体控件(包括子窗体控件)事件

  3. 窗体事件(例如,停用关闭

  4. 子窗体事件

注意:  由于子窗体事件在主窗体关闭之后发生,因此不会发生某些事件(例如从子窗体的事件中取消关闭主窗体)。可能需要将这些类型的验证测试移动到主窗体上的事件。

返回页首

击键和鼠标单击事件的顺序

如果窗体或控件具有焦点,则在按键或发送击键时,将发生窗体和控件的键盘事件。当鼠标指针悬停在窗体、窗体分区或窗体上的控件上时,单击鼠标按钮会触发该窗体、分区和控件的鼠标事件。将鼠标指针悬停在窗体、分区或控件上时,也会发生鼠标事件。

键盘事件

如果窗体上的控件具有焦点,则在按下并释放键(或者使用发送键 操作或 语句 发送击键)时,将依序发生下列事件:

键按下 箭头 击键 箭头 键释放

按下并释放键,或发送 ANSI 字符集 中的击键时,键按下击键键释放事件均会发生。如果按住一个 ANSI 键,则键按下击键事件会交替发生(键按下击键键按下击键,依此类推),直到释放该键;然后将发生键释放事件。

如果按下并释放一个非 ANSI 键,则将发生键按下键释放事件。如果按住一个非 ANSI 键,则将反复发生键按下事件,直到释放该键,然后将发生键释放事件。

如果按某个键会触发控件的另一个事件,则该事件在击键事件之后、键释放事件之前发生。例如,如果某个击键更改了文本框中的文本,从而触发了更改事件,则将依序发生下列事件:

键按下 箭头 击键 箭头 更改 箭头 键释放

如果击键导致焦点从一个控件移动到另一个控件,则第一个控件将发生键按下事件,而第二个控件将发生击键键释放事件。例如,如果更改控件中的数据,然后按 TAB 键移到下一个控件,则将依序发生下列事件:

  • 第一个控件:

    键按下 箭头 更新前 箭头 更新后 箭头 退出 箭头 失去焦点

  • 第二个控件:

    进入 箭头 获得焦点 箭头 击键 箭头 键释放

鼠标事件

如果鼠标指针悬停在窗体的控件上,则在单击然后释放鼠标按钮时,将依序发生下列控件事件:

鼠标按下 箭头 鼠标释放 箭头 单击

如果控件具有焦点,则在通过单击将焦点移动到第二个控件时,将依序发生下列事件:

  • 第一个控件:

    退出 箭头 失去焦点

  • 第二个控件:

    进入 箭头 获得焦点 箭头 鼠标按下 箭头 鼠标释放 箭头 单击

如果移动到另一记录,然后单击控件,则在发生控件的进入事件之前,还将发生窗体的成为当前事件。

双击控件导致单击双击事件均会发生。例如,双击除命令按钮之外的控件时,将依序发生该控件的下列事件:

鼠标 按下 箭头 鼠标释放 箭头 单击 箭头 双击 箭头 鼠标释放

双击命令按钮时,将依序发生上述事件,然后再次发生单击事件。

将鼠标指针悬停在窗体、分区或控件上时,窗体、分区或控件将发生鼠标移动事件。此事件独立于其他鼠标事件。

返回页首

报表和报表区域事件的顺序

打开报表进行打印或预览,或关闭报表时,将发生报表和报表区域事件。

报表事件

打开报表进行打印或预览,然后关闭该报表,或移动到 Access 中的另一对象选项卡时,将依序发生下列报表事件:

打开 箭头 激活 箭头 关闭 箭头 停用

在两个打开的报表之间切换时,第一个报表将发生停用事件,第二个报表将发生激活事件:

停用(报表 1) 箭头 激活(报表 2)

从报表切换到 Access 中的另一对象选项卡时,该报表也会发生停用事件。但是,在切换到对话框、“弹出方式”属性设置为“”的窗体或其他程序中的窗口时,不会发生停用事件。

打开基于查询的报表时,Access 将在运行基础查询之前触发该报表的打开事件。因此,可以使用响应打开事件的宏或事件过程来设置报表的条件。例如,宏或事件过程可以打开用于输入报表条件的自定义对话框。

报表区域事件

打印或预览报表时,报表区域的格式打印事件将在报表的打开激活事件之后、关闭停用事件之前发生:

打开(报表) 箭头 激活(报表) 箭头 格式(报表区域) 箭头 打印(报表区域) 箭头 关闭(报表) 箭头 停用(报表)

此外,将在设置格式的过程中或设置格式之后、打印事件之前发生以下事件:

  • 如果 Access 在设置报表格式的过程中返回之前的区域,则将发生撤消时事件。

  • 如果报表未显示任何记录,则将发生无数据事件。

  • 打印页前事件在设置格式之后、打印之前发生。此事件可用于自定义打印报表的外观。

返回页首

注意: 机器翻译免责声明:本文是由无人工介入的计算机系统翻译的。Microsoft 提供机器翻译是为了帮助非英语国家/地区用户方便阅读有关 Microsoft 产品、服务和技术的内容。由于机器翻译的原因,本文可能包含词汇、语法或文法方面的错误。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×