Control.LostFocus Evento

Definição

Ocorre quando o controlo perde o foco.

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 

Tipo de Evento

Atributos

Exemplos

O seguinte exemplo de código demonstra como validar o texto para o TextBox1. Também demonstra como lidar com o LostFocus evento ao definir a FileDialog.InitialDirectory propriedade para o texto em TextBox1. O exemplo de código usava o ErrorProvider.GetError método para verificar um erro antes de abrir a caixa de diálogo do ficheiro. Para executar este exemplo, cole o seguinte código numa forma contendo um TextBox nome , um OpenFileDialog nomeado OpenFileDialog1, um Button nome Button1, e um ErrorProviderErrorProvider1TextBox1nome . Certifique-se de que todos os eventos estão associados aos seus gestores de eventos.

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

Observações

Quando muda o foco usando o teclado (TAB, SHIFT+TAB, etc.), chamando os Select métodos ou SelectNextControl , ou definindo a ContainerControl.ActiveControl propriedade para a forma atual, os eventos de foco ocorrem pela seguinte ordem:

  1. Enter

  2. GotFocus

  3. Leave

  4. Validating

  5. Validated

  6. LostFocus

Quando muda o foco usando o rato ou chamando o Focus método, os eventos de foco ocorrem pela seguinte ordem:

  1. Enter

  2. GotFocus

  3. LostFocus

  4. Leave

  5. Validating

  6. Validated

Se a CausesValidation propriedade for definida como false, os Validating eventos e Validated são suprimidos.

Se a Cancel propriedade de o CancelEventArgs for definida como true no Validating evento delegar, todos os eventos que normalmente ocorreriam após o Validating evento são suprimidos.

Note

Os eventos GotFocus e LostFocus são eventos de foco de baixo nível que estão ligados às mensagens WM_KILLFOCUS e WM_SETFOCUS Windows. Normalmente, os GotFocus eventos e LostFocus são usados apenas ao atualizar UICues ou ao escrever controlos personalizados. Em vez disso, os Enter eventos e Leave devem ser usados para todos os controlos, exceto para a Form classe, que usa os Activated eventos and Deactivate . Para mais informações sobre os GotFocus eventos, LostFocus consulte os tópicos WM_KILLFOCUS e WM_KILLFOCUS .

Caution

Não tente definir o foco a partir dos Entermanipuladores de eventos, GotFocus, Leave, LostFocusValidating, , ou Validated de eventos. Fazer isso pode fazer com que a sua aplicação ou o sistema operativo deixem de responder. Para mais informações, consulte o tópico WM_KILLFOCUS .

Para obter mais informações sobre como manipular eventos, consulte Manipulando e gerando eventos.

Aplica-se a

Ver também