Поделиться через


Control.LostFocus Событие

Определение

Происходит при потере фокуса элементом управления.

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 

Тип события

Атрибуты

Примеры

В следующем примере кода демонстрируется проверка текста для TextBox1. Он также демонстрирует обработку LostFocus события, задавая FileDialog.InitialDirectory для свойства текст в TextBox1. В примере кода метод использовался ErrorProvider.GetError для проверка ошибки перед открытием диалогового окна файла. Чтобы выполнить этот пример, вставьте следующий код в форму, содержащую TextBox с именем TextBox1, OpenFileDialog с именем OpenFileDialog1, Button с именем Button1и ErrorProvider с именем ErrorProvider1. Убедитесь, что все события связаны с обработчиками событий.

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

Комментарии

При изменении фокуса с помощью клавиатуры (TAB, SHIFT+TAB и т. д.), путем вызова Select методов или SelectNextControl установки 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 подавляются.

Если свойству Cancel объекта присвоено CancelEventArgs значение true в делегате Validating события, все события, которые обычно происходят после Validating события, подавляются.

Примечание

События GotFocus и LostFocus — это события фокуса низкого уровня, привязанные к WM_KILLFOCUS и WM_SETFOCUS сообщениях Windows. Как правило, события и LostFocus используются только при обновлении UICues или при написании GotFocus пользовательских элементов управления. Вместо этого Enter события и Leave следует использовать для всех элементов управления, кроме Form класса , который использует Activated события и Deactivate . Дополнительные сведения о событиях и LostFocus см. в GotFocus разделах WM_KILLFOCUS и WM_KILLFOCUS.

Внимание!

Не пытайтесь задать фокус в обработчиках Enterсобытий , GotFocus, Leave, LostFocus, Validatingили Validated . Это может привести к тому, что приложение или операционная система перестают отвечать на запросы. Дополнительные сведения см. в разделе WM_KILLFOCUS .

Дополнительные сведения об обработке событий см. в разделе Обработка и вызов событий.

Применяется к

См. также раздел