全部显示

Enter 事件

       

在某一控件接受到同一窗体上另一控件的焦点之前,Enter 事件发生。

说明

该事件仅适用于窗体上的控件,不适用于报表上的控件。该事件不适用于选项组中的复选框选项按钮切换按钮,只适用于选项组本身。

若要在这些事件发生时,执行一个事件过程,请将 OnEnterOnExit 属性设置为宏的名称或 [Event Procedure]。

因为 Enter 事件发生在焦点移动到一个指定控件之前,所以可以使用 Enter 宏或事件过程来显示指示。例如,可以使用宏或事件过程来显示一个较小的窗体或消息框,以指出控件通常包含的数据类型,或给出如何使用控件的帮助。

Enter 事件发生在 GotFocus 事件之前。Exit 事件发生在 LostFocus 事件之前。

与 GotFocus 和 LostFocus 事件不同,Enter 和 Exit 事件在窗体获得或失去焦点时并不发生。例如,如果在窗体上选中复选框,然后单击报表。在选中复选框时,Enter 和 GotFocus 事件将发生;而在单击报表时,只有 LostFocus 事件发生,Exit 事件并没发生(因为焦点正移动到不同的窗口)。如果再次选中窗体上的复选框,以将复选框成为前台对象,GotFocus 事件发生,但是 Enter 事件并不发生(因为在窗体第一次激活时,控件已获得焦点)。Exit 事件只有在单击窗体上的另一个控件时才发生。

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

如果使用鼠标将焦点从主窗体上的控件移动到该窗体的子窗体中的控件(子窗体上没有获得焦点的控件),则将发生下列事件:

Exit(主窗体上的控件)  ==>

LostFocus(主窗体上的控件)  ==>

Enter(子窗体控件)  ==>

Exit(子窗体上具有焦点的控件)  ==>

LostFocus(子窗体上具有焦点的控件)  ==>

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

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

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

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

示例

在下面的示例中,“姓氏”文本框中包含两个事件过程。Enter 事件过程显示一条消息,告诉用户在文本框中能输入何种类型的数据;Exit 事件过程则显示一个对话框,询问用户是否应该在焦点移动到另一控件之前保存更改。如果用户单击“取消”按钮,Cancel 参数将设置为 True (-1),则焦点仍将移到文本框而不保存更改。如果用户选择“确定”按钮,则更改被保存,然后焦点移动到另一控件上。

若要试用该示例,请将下列事件过程添加到包含名为“姓氏”文本框的窗体上。

Private Sub LastName_Enter()
    MsgBox "Enter your last name."
End Sub

Private Sub LastName_Exit(Cancel As Integer)
    Dim strMsg As String

    strMsg = "You entered '" & Me!LastName _
     & "' as your last name." & _
        vbCrLf & "Is this correct?"
    If MsgBox(strMsg, vbYesNo) = vbNo Then
        Cancel = True            ' Cancel exit.
    Else
        Exit Sub                    ' Save changes and exit.
    End If
End Sub