Form.FormClosing 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 antes que o formulário seja fechado.
public:
event System::Windows::Forms::FormClosingEventHandler ^ FormClosing;
public event System.Windows.Forms.FormClosingEventHandler FormClosing;
public event System.Windows.Forms.FormClosingEventHandler? FormClosing;
member this.FormClosing : System.Windows.Forms.FormClosingEventHandler
Public Custom Event FormClosing As FormClosingEventHandler
Tipo de evento
Exemplos
O exemplo a seguir demonstra o uso desse membro. No exemplo, um manipulador de eventos relata a ocorrência do FormClosing evento. Este relatório ajuda você a saber quando o evento ocorre e pode ajudá-lo na depuração. Para relatar vários eventos ou eventos que ocorrem com frequência, considere substituir MessageBox.ShowConsole.WriteLine por ou acrescentar a mensagem a uma multilinha TextBox.
Para executar o código de exemplo, cole-o em um projeto que contém uma instância do tipo Form chamada Form1
. Em seguida, verifique se o manipulador de eventos está associado ao FormClosing evento.
private void Form1_FormClosing(Object sender, FormClosingEventArgs e) {
System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder();
messageBoxCS.AppendFormat("{0} = {1}", "CloseReason", e.CloseReason );
messageBoxCS.AppendLine();
messageBoxCS.AppendFormat("{0} = {1}", "Cancel", e.Cancel );
messageBoxCS.AppendLine();
MessageBox.Show(messageBoxCS.ToString(), "FormClosing Event" );
}
Private Sub Form1_FormClosing(sender as Object, e as FormClosingEventArgs) _
Handles Form1.FormClosing
Dim messageBoxVB as New System.Text.StringBuilder()
messageBoxVB.AppendFormat("{0} = {1}", "CloseReason", e.CloseReason)
messageBoxVB.AppendLine()
messageBoxVB.AppendFormat("{0} = {1}", "Cancel", e.Cancel)
messageBoxVB.AppendLine()
MessageBox.Show(messageBoxVB.ToString(),"FormClosing Event")
End Sub
Comentários
O FormClosing evento ocorre quando o formulário está sendo fechado. Quando um formulário é fechado, ele é descartado, liberando todos os recursos associados ao formulário. 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 FormClosingEventArgs 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 FormClosing 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 Hide método .
Se o formulário for um formulário pai de MDI (interface de vários documentos), os FormClosing eventos de todos os formulários filho MDI serão gerados antes que o evento do formulário pai MDI FormClosing seja gerado. Da mesma forma, os FormClosed eventos de todos os formulários filho MDI são gerados antes que o FormClosed evento do formulário pai MDI seja gerado. Cancelar o FormClosing evento de um formulário filho MDI não impede que o FormClosing evento do formulário pai MDI seja gerado. No entanto, cancelar o evento definirá como true
a Cancel propriedade da FormClosingEventArgs classe que é passada 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.