Control.LostFocus Zdarzenie

Definicja

Występuje, gdy kontrolka traci fokus.

public:
 event EventHandler ^ LostFocus;
[System.ComponentModel.Browsable(false)]
public event EventHandler LostFocus;
[System.ComponentModel.Browsable(false)]
public event EventHandler? LostFocus;
[<System.ComponentModel.Browsable(false)>]
member this.LostFocus : EventHandler 
Public Custom Event LostFocus As EventHandler 

Typ zdarzenia

Atrybuty

Przykłady

W poniższym przykładzie kodu pokazano sprawdzanie poprawności tekstu dla textBox1. Demonstruje również obsługę LostFocus zdarzenia, ustawiając FileDialog.InitialDirectory właściwość na tekst w polu TextBox1. W przykładzie kodu użyto ErrorProvider.GetError metody w celu sprawdzenia błędu przed otwarciem okna dialogowego pliku. Aby uruchomić ten przykład, wklej następujący kod w formularzu zawierającym nazwę , o nazwie OpenFileDialog1, Button nazwie Button1i ErrorProvider nazwie ErrorProvider1.OpenFileDialogTextBox1TextBox Upewnij się, że wszystkie zdarzenia są skojarzone z ich procedurami obsługi zdarzeń.

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.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 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

Uwagi

Po zmianie fokusu za pomocą klawiatury (TAB, SHIFT+TAB itd.), wywołując Select metody lub SelectNextControl ustawiając ContainerControl.ActiveControl właściwość na bieżący formularz, zdarzenia fokusu występują w następującej kolejności:

  1. Enter

  2. GotFocus

  3. Leave

  4. Validating

  5. Validated

  6. LostFocus

W przypadku zmiany fokusu przy użyciu myszy lub wywołania Focus metody zdarzenia fokusu są wykonywane w następującej kolejności:

  1. Enter

  2. GotFocus

  3. LostFocus

  4. Leave

  5. Validating

  6. Validated

Jeśli właściwość jest ustawiona CausesValidation na false, zdarzenia Validating i Validated są pomijane.

Cancel Jeśli właściwość obiektu CancelEventArgs jest ustawiona na true w delegatu Validating zdarzenia, wszystkie zdarzenia, które zwykle występują po wystąpieniu Validating zdarzenia są pomijane.

Uwaga

Zdarzenia GotFocus i LostFocus to zdarzenia fokusu niskiego poziomu, które są powiązane z komunikatami WM_KILLFOCUS i WM_SETFOCUS systemu Windows. GotFocus Zazwyczaj zdarzenia i LostFocus są używane tylko podczas aktualizowania UICues lub zapisywania kontrolek niestandardowych. Enter Zamiast tego zdarzenia i Leave powinny być używane dla wszystkich kontrolek z wyjątkiem Form klasy , która używa zdarzeń Activated i Deactivate . Aby uzyskać więcej informacji na temat zdarzeń GotFocus i LostFocus , zobacz tematy dotyczące WM_KILLFOCUS i WM_KILLFOCUS .

Przestroga

Nie należy próbować ustawiać fokusu Enterz poziomu programów obsługi zdarzeń , GotFocus, LeaveLostFocus, , Validatinglub Validated . Może to spowodować, że aplikacja lub system operacyjny przestaną odpowiadać. Aby uzyskać więcej informacji, zobacz temat WM_KILLFOCUS .

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz Obsługa i podnoszenie zdarzeń.

Dotyczy

Zobacz też