LostFocus 事件

此頁沒有內容條目
內容

expandtri全部顯示

LostFocus 事件在窗體或控件失去焦點時發(fā)生。

Private Sub object_LostFocus()

Object    窗體或窗體上控件的名稱。

說明

若要在該事件發(fā)生時運行事件過程,請將 OnLostFocus 屬性設置為宏的名稱或 [事件過程]。

當焦點為響應用戶操作而移動時,該事件發(fā)生。例如,當按下 Tab、單擊對象,或在 Visual Basic 中使用 SetFocus 方法,或在宏中使用 SelectObjectGoToRecord、GoToControlGoToPage 操作時,該事件就會發(fā)生。

控件只有在其 VisibleEnabled 屬性都設為“是”時才能獲得焦點。窗體只有在它沒有控件或所有可見控件都已禁用時才能獲得焦點。只要窗體中包含可見的有效控件,窗體的 GotFocus 事件就不會發(fā)生。

注釋  如果要自定義在按下 Tab 時焦點在窗體控件間移動的順序,請設置控件的 Tab 次序或指定控件的訪問鍵。

LostFocus 與 Exit 事件不同之處在于:每當控件失去焦點時就會發(fā)生 LostFocus 事件。而 Exit 事件只有在同一窗體上的一個控件失去焦點之后、另一控件獲得焦點之前才會發(fā)生。LostFocus 事件在 Exit 事件之后發(fā)生。

如果將焦點移動到窗體上的另一控件上,而且該控件在窗體上沒有焦點,則窗體原來擁有焦點的控件的 Exit 和 LostFocus 事件將發(fā)生在焦點移到的控件的 Enter 和 GotFocus 事件發(fā)生之前。

如果使用鼠標將焦點從主窗體上的控件移動到該窗體的子窗體控件上,下列事件將發(fā)生:

Exit (主窗體上的控件)

?

LostFocus (主窗體上的控件)

?

Enter (主窗體上的控件)

?

Exit(子窗體上焦點將移到的控件)

?

LostFocus (子窗體上焦點將移到的控件)

?

Enter (子窗體上焦點將移到的控件)

?

GotFocus (子窗體上焦點將移到的控件)

如果子窗體上焦點將移到的控件以前有焦點,則控件的 Enter 事件和 GotFocus 事件均不發(fā)生,但是子窗體控件的 Enter 事件將發(fā)生。如果將焦點從子窗體上的控件移動到主窗體上的控件,子窗體上這個控件的 Exit 事件和 LostFocus 事件不發(fā)生,只有子窗體控件的 Exit 事件以及主窗體上控件的 Enter 事件和 GotFocus 事件發(fā)生。

注釋  一般使用鼠標或按鍵(例如 Tab )將焦點移到另一控件上。這不但會使本主題討論的事件發(fā)生,還將發(fā)生鼠標或鍵盤事件。

在兩個開啟的窗體之間切換時,切換的窗體將發(fā)生 Deactivate 事件,而切換到的窗體則發(fā)生 Activate 事件。如果這兩個窗體中沒有包含已啟用的可見控件,則對于第一個窗體,LostFocus 事件先發(fā)生,而后發(fā)生 Deactivate 事件;對于第二個窗體,Activate 事件先發(fā)生,而后 GotFocus 事件發(fā)生。

使用 LostFocus 宏可以在用戶將焦點移出控件時驗證已輸入的數據是否有效。還可以還原或更改您在對象的 GotFocus 宏中所設置的條件。

LostFocus 和 GotFocus 宏的基他用途包括:啟用、禁用、顯示和隱藏其他對象。

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

示例

下面的示例可以在焦點移到選項按鈕時,在標簽中顯示消息。

若要試用該示例,請將下列事件過程添加到名為“聯(lián)絡人”的窗體中,并在該窗體中包含一個名為“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