GotFocus 事件

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

GotFocus 事件在窗體控件獲得焦點(diǎn)時(shí)發(fā)生。

Private Sub object_GotFocus()

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

說明

注釋  GotFocus 事件只適用于窗體或窗體上的控件,不適用于報(bào)表上的控件。

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

當(dāng)焦點(diǎn)為響應(yīng)用戶操作而移動時(shí),這些事件發(fā)生。例如,按下 Tab、單擊對象,或在 Visual Basic 中使用 SetFocus 方法,或在宏中使用 SelectObject、GoToRecord、GoToControlGoToPage 操作時(shí),該事件就會發(fā)生。

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

當(dāng) GotFocus 事件發(fā)生時(shí),可以通過運(yùn)行宏或事件過程來指定窗體或控件獲得焦點(diǎn)時(shí)要進(jìn)行的操作。例如,通過將 GotFocus 事件過程附加到窗體上的每一控件,可以在文本框中顯示簡要的幫助或消息來指引用戶使用應(yīng)用程序。也可以根據(jù)控件是否獲得焦點(diǎn),在視覺上提供有關(guān)控件有效、失效的提示。

注釋  如果要自定義在按下 Tab 時(shí)焦點(diǎn)在窗體控件間移動的順序,請?jiān)O(shè)置控件的 Tab 次序或指定控件的訪問鍵。

GotFocus 事件與 Enter 事件不同之處在于:GotFocus 事件在控件每次獲得焦點(diǎn)時(shí)都發(fā)生。例如,如果用戶單擊窗體上的復(fù)選框,然后單擊報(bào)表,最后再單擊窗體上的復(fù)選框?qū)⑺@示為前臺對象,復(fù)選框兩次獲得焦點(diǎn)時(shí) GotFocus 事件都會發(fā)生。而 Enter 事件只在用戶第一次單擊復(fù)選框時(shí)才發(fā)生。GotFocus 事件在 Enter 事件之后發(fā)生。

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

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

Exit (主窗體上的控件)

?

LostFocus (主窗體上的控件)

?

Enter (子窗體上的控件)

?

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

?

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

?

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

?

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

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

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

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

當(dāng)用戶將焦點(diǎn)移出控件時(shí),您可以使用 LostFocus 宏驗(yàn)證所輸入的數(shù)據(jù)是否有效。您還可以還原或更改在對象的 GotFocus 宏中設(shè)置的條件。

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

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

示例

下面的示例可以在焦點(diǎn)移到選項(xiàng)按鈕時(shí),在標(biāo)簽中顯示消息。

若要試用該示例,請將下列事件過程添加到名為“聯(lián)絡(luò)人”的窗體中,并在該窗體中包含一個(gè)名為“OptionYes”的選項(xiàng)按鈕和名為“LabelYes”的標(biāo)簽。

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