Questa documentazione è stata archiviata e non viene gestita.

Evento Control.LostFocus

Aggiornamento: novembre 2007

Si verifica quando il controllo perde lo stato attivo.

Spazio dei nomi:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)

[BrowsableAttribute(false)]
public event EventHandler LostFocus
/** @event */
/** @attribute BrowsableAttribute(false) */
public void add_LostFocus (EventHandler value)
/** @event */
/** @attribute BrowsableAttribute(false) */
public void remove_LostFocus (EventHandler value)

JScript non supporta gli eventi.

Quando si modifica lo stato attivo mediante la tastiera (TAB, MAIUSC+TAB e così via), chiamando i metodi Select o SelectNextControl, oppure impostando la proprietà ContainerControl.ActiveControl sul form corrente, gli eventi di attivazione si verificano nel seguente ordine:

  1. Enter

  2. GotFocus

  3. Leave

  4. Validating

  5. Validated

  6. LostFocus

Quando si modifica lo stato attivo mediante il mouse o chiamando il metodo Focus, gli eventi di attivazione si verificano nel seguente ordine:

  1. Enter

  2. GotFocus

  3. LostFocus

  4. Leave

  5. Validating

  6. Validated

Se la proprietà CausesValidation è impostata su false, gli eventi Validating e Validated sono soppressi.

Se la proprietà Cancel di CancelEventArgs è impostata su true nel delegato dell'evento Validating, tutti gli eventi che in genere si verificano dopo l'evento Validating verranno soppressi.

Nota:

Gli eventi GotFocus e LostFocus sono eventi di attivazione di basso livello associati ai messaggi WM_KILLFOCUS e WM_SETFOCUS di Windows. In genere, gli eventi GotFocus e LostFocus vengono utilizzati solo durante l'aggiornamento di UICues o la scrittura di controlli personalizzati. È invece necessario utilizzare gli eventi Enter e Leave per tutti i controlli, ad eccezione della classe Form, che utilizza gli eventi Activated e Deactivate. Per ulteriori informazioni sugli eventi GotFocus e LostFocus, vedere gli argomenti WM_SETFOCUS e WM_KILLFOCUS nella sezione di riferimento sull'input da tastiera della documentazione relativa a Platform SDK disponibile in MSDN Library all'indirizzo http://www.microsoft.com/italy/msdn/library.

Attenzione:

Non tentare di impostare lo stato attivo dall'interno del gestore eventi LostFocus. Questa operazione può provocare il blocco dell'applicazione o del sistema operativo. Per ulteriori informazioni sull'evento LostFocus, vedere l'argomento WM_KILLFOCUS nella sezione di riferimento sull'input da tastiera e l'argomento Message Deadlocks nella sezione sui messaggi e sulle code di messaggi della documentazione relativa a Platform SDK disponibile in MSDN Library all'indirizzo http://www.microsoft.com/italy/msdn/library.

Per ulteriori informazioni sulla gestione degli eventi, vedere Utilizzo degli eventi.

Nell'esempio di codice riportato di seguito viene illustrata la convalida del testo di TextBox1. Viene inoltre illustrato come gestire l'evento LostFocus impostando la proprietà FileDialog.InitialDirectory sul testo presente in TextBox1. Nell'esempio di codice è stato utilizzato il metodo ErrorProvider.GetError per verificare la presenza di errori prima di aprire la finestra di dialogo per la gestione di file. Per eseguire l'esempio, incollare il seguente codice in un form contenente un oggetto TextBox denominato TextBox1, un oggetto OpenFileDialog denominato OpenFileDialog1, un oggetto Button denominato Button1 e un oggetto ErrorProvider denominato ErrorProvider1. Accertarsi che tutti gli eventi siano associati ai relativi gestori eventi.

	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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition , Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile per Smartphone, Windows Mobile per Pocket PC

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supportato in: 3.5, 2.0, 1.0
Mostra: