全部显示

GotFocus 事件

       

GotFocus 事件在窗体控件获得焦点时发生。

说明

注意   GotFocus 事件只适用于窗体或窗体上的控件,不适用于报表上的控件。

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

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

控件只有在它的 Visible 和“是否有效”属性都设置为“是”时才能获得焦点。窗体只有在它没有控件或所有可见的控件都失效时,才能获得焦点。如果窗体包含了任何可见的、有效的控件,则窗体的 GotFocus 事件不会发生。

当 GotFocus 事件发生时,可以通过运行宏或事件过程来指定窗体或控件获得焦点时要进行的操作。例如,通过将 GotFocus 事件过程附加到窗体上的每一控件,可以在文本框中显示简要的帮助或消息来指引用户使用应用程序。也可以根据控件是否获得焦点,在视觉上提供有关控件有效、失效的提示。

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

GotFocus 事件与 Enter 事件不同之处在于:GotFocus 事件在控件每次获得焦点时都发生。例如,如果用户单击窗体上的复选框,然后单击报表,最后再单击窗体上的复选框将它显示为前台对象,复选框两次获得焦点时 GotFocus 事件都会发生。而 Enter 事件只在用户第一次单击复选框时才发生。GotFocus 事件在 Enter 事件之后发生。

如果将焦点移动到窗体上的另一控件上,而且该控件在窗体上没有焦点,则窗体原来拥有焦点的控件的 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 事件发生。

示例

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

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

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