Private Sub object_GotFocus()
Object 窗体或窗体上控件的名称。
注释 GotFocus 事件只适用于窗体或窗体上的控件,不适用于报表上的控件。
若要在该事件发生运行宏或事件过程,请将 OnGotFocus 属性设置为宏的名称或 [事件过程]。
当焦点为响应用户操作而移动时,这些事件发生。例如,按下 Tab、单击对象,或在 Visual Basic 中使用 SetFocus 方法,或在宏中使用 SelectObject、GoToRecord、GoToControl 或 GoToPage 操作时,该事件就会发生。
控件只有在其 Visible 和 Enabled 属性都设为“是”时才能获得焦点。窗体只有在它没有控件或所有可见控件都已禁用时才能获得焦点。只要窗体中包含可见的有效控件,窗体的 GotFocus 事件就不会发生。
当 GotFocus 事件发生时,可以通过运行宏或事件过程来指定窗体或控件获得焦点时要进行的操作。例如,通过将 GotFocus 事件过程附加到窗体上的每一控件,可以在文本框中显示简要的帮助或消息来指引用户使用应用程序。也可以根据控件是否获得焦点,在视觉上提供有关控件有效、失效的提示。
注释 如果要自定义在按下 Tab 时焦点在窗体控件间移动的顺序,请设置控件的 Tab 次序或指定控件的访问键。
GotFocus 事件与 Enter 事件不同之处在于:GotFocus 事件在控件每次获得焦点时都发生。例如,如果用户单击窗体上的复选框,然后单击报表,最后再单击窗体上的复选框将它显示为前台对象,复选框两次获得焦点时 GotFocus 事件都会发生。而 Enter 事件只在用户第一次单击复选框时才发生。GotFocus 事件在 Enter 事件之后发生。
如果将焦点移动到窗体上的另一控件上,而且该控件在窗体上没有焦点,则窗体原来拥有焦点的控件的 Exit 和 LostFocus 事件将发生在焦点移到的控件的 Enter 和 GotFocus 事件发生之前。
如果使用鼠标将焦点从主窗体上的控件移动到该窗体的子窗体控件上,下列事件将发生:
Exit (主窗体上的控件)
ß
LostFocus (主窗体上的控件)
ß
Enter (子窗体上的控件)
ß
GotFocus(子窗体上焦点将移到的控件)
ß
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