Esta documentación está archivada y no tiene mantenimiento.

Control.LostFocus (Evento)

Se produce cuando el control pierde el foco.

Espacio de nombres: System.Windows.Forms
Ensamblado: System.Windows.Forms (en system.windows.forms.dll)

public event EventHandler LostFocus
/** @event */
public void add_LostFocus (EventHandler value)

/** @event */
public void remove_LostFocus (EventHandler value)

En JScript, se pueden controlar los eventos que define una clase, pero no se pueden definir unos propios.
No aplicable.

Al cambiar el foco mediante el teclado (TAB, MAYÚS+TAB, etc.), llamando al método Select o SelectNextControl, o bien, estableciendo el valor de la propiedad ContainerControl.ActiveControl en el formulario actual, los eventos de foco se producen en el siguiente orden:

  1. Enter

  2. GotFocus

  3. Leave

  4. Validating

  5. Validated

  6. LostFocus

Al cambiar el foco mediante el mouse (ratón) o llamando al método Focus, los eventos de foco se producen en el siguiente orden:

  1. Enter

  2. GotFocus

  3. LostFocus

  4. Leave

  5. Validating

  6. Validated

Si la propiedad CausesValidation se establece en false, los eventos Validating y Validated se suprimen.

Si la propiedad Cancel de CancelEventArgs se establece en true en el delegado del evento Validating, se suprimen todos los eventos que normalmente se producirían después del evento Validating.

NotaNota:

Los eventos GotFocus y LostFocus son eventos de foco de bajo nivel asociados a los mensajes de Windows WM_KILLFOCUS y WM_SETFOCUS. Normalmente, los eventos GotFocus y LostFocus sólo se utilizan al actualizar UICues o al escribir controles personalizados. En su lugar, deben utilizarse los eventos Enter y Leave para todos los controles, excepto la clase Form, que utiliza los eventos Activated y Deactivate. Para obtener más información acerca de los eventos GotFocus y LostFocus, vea los temas WM_SETFOCUS y WM_KILLFOCUS en la sección "Keyboard Input Reference" de la documentación de Platform SDK en MSDN Library, en http://msdn.microsoft.com/library/spa.

Nota de precauciónPrecaución:

No intente establecer el foco desde el controlador del evento LostFocus. Esto puede dar lugar a que la aplicación o el sistema operativo no respondan. Para obtener más información acerca del evento LostFocus, vea el tema WM_KILLFOCUS en la sección "Keyboard Input Reference" y el tema Message Deadlocks en la sección "Messages and Message Queues" de la documentación de Platform SDK en MSDN Library, en http://msdn.microsoft.com/library/spa.

Para obtener más información sobre la forma de controlar eventos, vea Utilizar eventos.

En el siguiente ejemplo de código se muestra cómo validar el texto de TextBox1. También se muestra cómo controlar el evento LostFocus estableciendo la propiedad FileDialog.InitialDirectory en el texto de TextBox1. En el ejemplo de código se usa el método ErrorProvider.GetError para comprobar si hay errores antes de abrir el cuadro de diálogo de archivo. Para ejecutar este ejemplo, pegue el siguiente código en un formulario que contenga un TextBox denominado TextBox1, un OpenFileDialog denominado OpenFileDialog1, un Button denominado Button1 y un ErrorProvider denominado ErrorProvider1. Asegúrese de que todos los eventos están asociados a sus controladores 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 = 
            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 = 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

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Mostrar: