LostFocus 事件

expandtri全部显示

LostFocus 事件在窗体或控件失去焦点时发生。

Private Sub object_LostFocus()

Object    窗体或窗体上控件的名称。

说明

若要在该事件发生时运行事件过程,请将 OnLostFocus 属性设置为宏的名称或 [事件过程]。

当焦点为响应用户操作而移动时,该事件发生。例如,当按下 Tab、单击对象,或在 Visual Basic 中使用 SetFocus 方法,或在宏中使用 SelectObjectGoToRecordGoToControlGoToPage 操作时,该事件就会发生。

控件只有在其 VisibleEnabled 属性都设为“是”时才能获得焦点。窗体只有在它没有控件或所有可见控件都已禁用时才能获得焦点。只要窗体中包含可见的有效控件,窗体的 GotFocus 事件就不会发生。

注释  如果要自定义在按下 Tab 时焦点在窗体控件间移动的顺序,请设置控件的 Tab 次序或指定控件的访问键

LostFocus 与 Exit 事件不同之处在于:每当控件失去焦点时就会发生 LostFocus 事件。而 Exit 事件只有在同一窗体上的一个控件失去焦点之后、另一控件获得焦点之前才会发生。LostFocus 事件在 Exit 事件之后发生。

如果将焦点移动到窗体上的另一控件上,而且该控件在窗体上没有焦点,则窗体原来拥有焦点的控件的 Exit 和 LostFocus 事件将发生在焦点移到的控件的 Enter 和 GotFocus 事件发生之前。

如果使用鼠标将焦点从主窗体上的控件移动到该窗体的子窗体控件上,下列事件将发生:

Exit (主窗体上的控件)

ß

LostFocus (主窗体上的控件)

ß

Enter (主窗体上的控件)

ß

Exit(子窗体上焦点将移到的控件)

ß

LostFocus (子窗体上焦点将移到的控件)

ß

Enter (子窗体上焦点将移到的控件)

ß

GotFocus (子窗体上焦点将移到的控件)

如果子窗体上焦点将移到的控件以前有焦点,则控件的 Enter 事件和 GotFocus 事件均不发生,但是子窗体控件的 Enter 事件将发生。如果将焦点从子窗体上的控件移动到主窗体上的控件,子窗体上这个控件的 Exit 事件和 LostFocus 事件不发生,只有子窗体控件的 Exit 事件以及主窗体上控件的 Enter 事件和 GotFocus 事件发生。

注释  一般使用鼠标或按键(例如 Tab )将焦点移到另一控件上。这不但会使本主题讨论的事件发生,还将发生鼠标或键盘事件。

在两个开启的窗体之间切换时,切换的窗体将发生 Deactivate 事件,而切换到的窗体则发生 Activate 事件。如果这两个窗体中没有包含已启用的可见控件,则对于第一个窗体,LostFocus 事件先发生,而后发生 Deactivate 事件;对于第二个窗体,Activate 事件先发生,而后 GotFocus 事件发生。

使用 LostFocus 宏可以在用户将焦点移出控件时验证已输入的数据是否有效。还可以还原或更改您在对象的 GotFocus 宏中所设置的条件。

LostFocus 和 GotFocus 宏的基他用途包括:启用、禁用、显示和隐藏其他对象。

不能在 GotFocus 或 LostFocus 宏中使用 CancelEvent 操作。

示例

下面的示例可以在焦点移到选项按钮时,在标签中显示消息。

若要试用该示例,请将下列事件过程添加到名为“联络人”的窗体中,并在该窗体中包含一个名为“OptionYes”的选项按钮和名为“LabelYes”的标签。

Private Sub OptionYes_GotFocus()

    Me!LabelYes.Caption = "Option button 'Yes' has the focus."

End Sub

Private Sub OptionYes_LostFocus()

    Me!LabelYes.Caption = ""        ' Clear caption.

End Sub