Freigeben über


Control.LostFocus-Ereignis

Tritt ein, wenn das Steuerelement den Fokus verliert.

Namespace: System.Windows.Forms
Assembly: System.Windows.Forms (in system.windows.forms.dll)

Syntax

'Declaration
Public Event LostFocus As EventHandler
'Usage
Dim instance As Control
Dim handler As EventHandler

AddHandler instance.LostFocus, handler
public event EventHandler LostFocus
public:
event EventHandler^ LostFocus {
    void add (EventHandler^ value);
    void remove (EventHandler^ value);
}
/** @event */
public void add_LostFocus (EventHandler value)

/** @event */
public void remove_LostFocus (EventHandler value)
JScript unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.

Hinweise

Wenn Sie den Fokus mithilfe der Tastatur (TAB, UMSCHALT+TAB usw.), durch Aufrufen der Select-Methode oder der SelectNextControl-Methode oder durch Festlegen der ContainerControl.ActiveControl-Eigenschaft auf das aktuelle Formular ändern, treten die Fokusereignisse in der folgenden Reihenfolge ein:

  1. Enter

  2. GotFocus

  3. Leave

  4. Validating

  5. Validated

  6. LostFocus

Wenn Sie den Fokus mit der Maus oder durch Aufrufen der Focus-Methode ändern, treten die Fokusereignisse in der folgenden Reihenfolge ein:

  1. Enter

  2. GotFocus

  3. LostFocus

  4. Leave

  5. Validating

  6. Validated

Wenn die CausesValidation-Eigenschaft auf false festgelegt ist, wird das Validating-Ereignis und das Validated-Ereignis unterdrückt.

Wenn die Cancel-Eigenschaft von CancelEventArgs im Validating-Ereignisdelegaten auf true festgelegt wird, werden alle normalerweise nach dem Validating-Ereignis eintretenden Ereignisse unterdrückt.

Hinweis

Das GotFocus-Ereignis und das LostFocus-Ereignis sind Fokus-Ereignisse niedriger Ebene, die an die Windows-Meldungen WM_KILLFOCUS und WM_SETFOCUS gebunden sind. Das GotFocus-Ereignis und das LostFocus-Ereignis wird i. d. R. nur beim Aktualisieren von UICues oder beim Schreiben benutzerdefinierter Steuerelemente verwendet. Stattdessen sollten das Enter-Ereignis und das Leave-Ereignis für alle Steuerelemente außer der Form-Klasse verwendet werden, die das Activated-Ereignis und das Deactivate-Ereignis verwendet. Weitere Informationen zum GotFocus-Ereignis und zum LostFocus-Ereignis finden Sie in den Themen WM_SETFOCUS und WM_KILLFOCUS in der MSDN Library im Abschnitt "Keyboard Input Reference" der Platform SDK-Dokumentation unter https://msdn.microsoft.com/library/deu.

Warnung

Legen Sie den Fokus nicht vom LostFocus-Ereignishandler aus fest. Andernfalls reagiert die Anwendung oder das Betriebssystem möglicherweise nicht mehr. Weitere Informationen zum LostFocus-Ereignis finden Sie in der MSDN Library im Abschnitt "Keyboard Input Reference" unter dem Thema WM_KILLFOCUS und in der Platform SDK-Dokumentation der MSDN Library im Abschnitt "Messages and Messages Queues" unter dem Thema Message Deadlocks unter https://msdn.microsoft.com/library/deu.

Weitere Informationen zum Behandeln von Ereignissen finden Sie unter Behandeln von Ereignissen.

Beispiel

Im folgenden Codebeispiel wird das Überprüfen des Texts in der TextBox1 veranschaulicht. Es wird auch die Behandlung des LostFocus-Ereignisses veranschaulicht, indem die FileDialog.InitialDirectory-Eigenschaft auf den Text in TextBox1 festgelegt wird. Im Codebeispiel wurde die ErrorProvider.GetError-Methode verwendet, um vor dem Öffnen des Dateidialogfelds zu überprüfen, ob ein Fehler vorliegt. Fügen Sie zum Ausführen dieses Beispiels den folgenden Code in ein Formular ein, das eine TextBox mit dem Namen TextBox1, einen OpenFileDialog mit dem Namen OpenFileDialog1, einen Button mit dem Namen Button1 und einen ErrorProvider mit dem Namen ErrorProvider1 enthält. Stellen Sie sicher, dass allen Ereignissen der entsprechende Ereignishandler zugeordnet ist.

Private Sub TextBox1_Validating(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles TextBox1.Validating

    ' 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
        Dim directory As New System.IO.DirectoryInfo(TextBox1.Text)
        directory.GetFiles()
        ErrorProvider1.SetError(TextBox1, "")

    Catch ex1 As System.ArgumentException
        ErrorProvider1.SetError(TextBox1, "Please enter a directory")

    Catch ex2 As System.IO.DirectoryNotFoundException
        ErrorProvider1.SetError(TextBox1, _
        "The directory does not exist." & _
        "Try again with a different directory.")
    End Try

End Sub

' This method handles the LostFocus event for TextBox1 by setting the 
' dialog's InitialDirectory property to the text in TextBox1.
Private Sub TextBox1_LostFocus(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles TextBox1.LostFocus
    OpenFileDialog1.InitialDirectory = TextBox1.Text
End Sub


' This method demonstrates using the ErrorProvider.GetError method 
' to check for an error before opening the dialog box.
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

    'If there is no error, then open the dialog box.
    If ErrorProvider1.GetError(TextBox1) = "" Then
        Dim dialogResult As DialogResult = OpenFileDialog1.ShowDialog()
    End If

End Sub
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();
    }
}
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 = gcnew System::IO::DirectoryInfo( TextBox1->Text );
         directory->GetFiles();
         ErrorProvider1->SetError( TextBox1, "" );
      }
      catch ( System::ArgumentException^ ) 
      {
         ErrorProvider1->SetError( TextBox1, "Please enter a directory" );
      }
      catch ( System::IO::DirectoryNotFoundException^ ) 
      {
         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.
   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.
   void Button1_Click( System::Object^ sender, System::EventArgs^ e )
   {
      //If there is no error, then open the dialog box.
      if ( ErrorProvider1->GetError( TextBox1 )->Equals( "" ) )
      {
         ::DialogResult dialogResult = OpenFileDialog1->ShowDialog();
      }
   }
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.get_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.");
    }
} //textBox1_Validating

// 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.set_InitialDirectory(textBox1.get_Text());
} //textBox1_LostFocus

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

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

Control-Klasse
Control-Member
System.Windows.Forms-Namespace
OnLostFocus
Control.GotFocus-Ereignis
Control.Leave-Ereignis
Form.Deactivate