Control.LostFocus 事件

定義

發生於控制項遺失焦點時。

C#
[System.ComponentModel.Browsable(false)]
public event EventHandler LostFocus;
C#
[System.ComponentModel.Browsable(false)]
public event EventHandler? LostFocus;

事件類型

屬性

範例

下列程式碼範例示範驗證 TextBox1 的文字。 它也會示範如何藉由將 FileDialog.InitialDirectory 屬性設定為 TextBox1 中的文字來處理 LostFocus 事件。 程式碼範例使用 ErrorProvider.GetError 方法在開啟檔案對話方塊之前檢查錯誤。 若要執行此範例,請將下列程式碼貼到表單中,其中包含 TextBox 名為 的 、 OpenFileDialog 名為 的 、 Button 名為 Button1OpenFileDialog1 的 ,以及 ErrorProvider 名為 ErrorProvider1TextBox1 的 。 確定所有事件都與其事件處理常式相關聯。

C#
private void textBox1_Validating(object sender, 
    System.ComponentModel.CancelEventArgs e)
{
    // If nothing is entered,
    // an ArgumentException is caught; if an invalid directory is entered, 
    // a DirectoryNotFoundException is caught. An appropriate error message 
    // is displayed in either case.
    try
    {
        System.IO.DirectoryInfo directory = 
            new System.IO.DirectoryInfo(textBox1.Text);
        directory.GetFiles();
        errorProvider1.SetError(textBox1, "");
    }
    catch(System.ArgumentException ex1)
    {
        errorProvider1.SetError(textBox1, "Please enter a directory");
    }
    catch(System.IO.DirectoryNotFoundException ex2)
    {
        errorProvider1.SetError(textBox1, "The directory does not exist." +
            "Try again with a different directory.");
    }
}

// This method handles the LostFocus event for textBox1 by setting the 
// dialog's InitialDirectory property to the text in textBox1.
private void textBox1_LostFocus(object sender, System.EventArgs e)
{
    openFileDialog1.InitialDirectory = textBox1.Text;
}

// This method demonstrates using the ErrorProvider.GetError method 
// to check for an error before opening the dialog box.
private void button1_Click(System.Object sender, System.EventArgs e)
{
    //If there is no error, then open the dialog box.
    if (errorProvider1.GetError(textBox1)=="")
    {
        DialogResult dialogResult = openFileDialog1.ShowDialog();
    }
}

備註

當您使用鍵盤 (TAB、SHIFT+TAB 等) 、呼叫 SelectSelectNextControl 方法,或將 屬性設定 ContainerControl.ActiveControl 為目前表單來變更焦點時,焦點事件會依下列順序發生:

  1. Enter

  2. GotFocus

  3. Leave

  4. Validating

  5. Validated

  6. LostFocus

當您使用滑鼠或呼叫 Focus 方法來變更焦點時,焦點事件會依下列順序發生:

  1. Enter

  2. GotFocus

  3. LostFocus

  4. Leave

  5. Validating

  6. Validated

CausesValidation如果 屬性設定為 false ,則會 Validating 隱藏 和 Validated 事件。

如果在事件委派中將 CancelCancelEventArgs 屬性設定為 true ,則通常會在隱藏事件之後 Validating 發生的所有事件。 Validating

備註

GotFocusLostFocus 事件是系結至WM_KILLFOCUS和WM_SETFOCUS Windows 訊息的低階焦點事件。 一般而言, GotFocus 只有在更新 UICues 或撰寫自訂控制項時,才會使用 和 LostFocus 事件。 相反地, EnterLeave 事件應該用於 類別以外的 Form 所有控制項,而這個類別會使用 ActivatedDeactivate 事件。 如需 和 LostFocus 事件的詳細資訊 GotFocus ,請參閱WM_KILLFOCUSWM_KILLFOCUS主題。

注意

請勿嘗試從 、 GotFocusLeaveLostFocusValidatingValidated 事件處理常式內 Enter 設定焦點。 這樣做可能會導致您的應用程式或作業系統停止回應。 如需詳細資訊,請參閱 WM_KILLFOCUS 主題。

如需處理事件的詳細資訊,請參閱 處理和引發事件

適用於

產品 版本
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另請參閱