Form.Closing Evento
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Ocorre quando o formulário está sendo fechado.
public:
event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
[System.ComponentModel.Browsable(false)]
public event System.ComponentModel.CancelEventHandler Closing;
[System.ComponentModel.Browsable(false)]
public event System.ComponentModel.CancelEventHandler? Closing;
member this.Closing : System.ComponentModel.CancelEventHandler
[<System.ComponentModel.Browsable(false)>]
member this.Closing : System.ComponentModel.CancelEventHandler
Public Custom Event Closing As CancelEventHandler
Tipo de evento
- Atributos
Exemplos
O exemplo a seguir usa Closing para testar se o texto em um TextBox foi alterado. Se tiver, o usuário será questionado se deseja salvar as alterações em um arquivo.
private:
void Form1_Closing( Object^ /*sender*/, System::ComponentModel::CancelEventArgs^ e )
{
// Determine if text has changed in the textbox by comparing to original text.
if ( textBox1->Text != strMyOriginalText )
{
// Display a MsgBox asking the user to save changes or abort.
if ( MessageBox::Show( "Do you want to save changes to your text?", "My Application", MessageBoxButtons::YesNo ) == ::DialogResult::Yes )
{
// Cancel the Closing event from closing the form.
e->Cancel = true;
// Call method to save file...
}
}
}
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Determine if text has changed in the textbox by comparing to original text.
if (textBox1.Text != strMyOriginalText)
{
// Display a MsgBox asking the user to save changes or abort.
if(MessageBox.Show("Do you want to save changes to your text?", "My Application",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// Cancel the Closing event from closing the form.
e.Cancel = true;
// Call method to save file...
}
}
}
Private Sub Form1_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
' Determine if text has changed in the textbox by comparing to original text.
If textBox1.Text <> strMyOriginalText Then
' Display a MsgBox asking the user to save changes or abort.
If MessageBox.Show("Do you want to save changes to your text?", "My Application", MessageBoxButtons.YesNo) = DialogResult.Yes Then
' Cancel the Closing event from closing the form.
e.Cancel = True
End If ' Call method to save file...
End If
End Sub
End Class
Comentários
Cuidado
O Closing evento está obsoleto começando com o .NET Framework 2.0; use o FormClosing evento em vez disso.
O Closing evento ocorre quando o formulário está sendo fechado. Quando um formulário é fechado, todos os recursos criados dentro do objeto são liberados e o formulário é descartado. Se você cancelar esse evento, o formulário permanecerá aberto. Para cancelar o fechamento de um formulário, defina a Cancel propriedade do passado para o CancelEventArgs manipulador de eventos como true
.
Quando um formulário é exibido como uma caixa de diálogo modal, clicar no botão Fechar (o botão com um X no canto superior direito do formulário) faz com que o formulário fique oculto e a DialogResult propriedade seja definida DialogResult.Cancel
como . Você pode substituir o valor atribuído à DialogResult propriedade quando o usuário clica no botão Fechar definindo a DialogResult propriedade em um manipulador de eventos para o Closing evento do formulário.
Observação
Quando o Close método é chamado em um Form exibido como uma janela sem formatada, você não pode chamar o Show método para tornar o formulário visível, pois os recursos do formulário já foram liberados. Para ocultar um formulário e torná-lo visível, use o Control.Hide método .
Cuidado
Os Form.Closed eventos e Form.Closing não são gerados quando o Application.Exit método é chamado para sair do aplicativo. Se você tiver código de validação em qualquer um desses eventos que devem ser executados, deverá chamar o Form.Close método para cada formulário aberto individualmente antes de chamar o Exit método .
Se o formulário for um formulário pai MDI, os Closing eventos de todos os formulários filho MDI serão gerados antes que o evento do formulário pai MDI Closing seja gerado. Além disso, os Closed eventos de todos os formulários filho MDI são gerados antes que o Closed evento do formulário pai MDI seja gerado. Cancelar o Closing evento de um formulário filho MDI não impede que o Closing evento do formulário pai MDI seja gerado. No entanto, cancelar o evento definirá como true
a Cancel propriedade do CancelEventArgs que é passado como um parâmetro para o formulário pai. Para forçar o fechamento de todos os formulários pai e filho da MDI, defina a Cancel propriedade false
como no formulário pai da MDI.
Para obter mais informações sobre como lidar com eventos, consulte Manipulando e gerando eventos.