Form.FormClosing Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Se produce antes de cerrar el formulario.
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
Ejemplos
En el ejemplo siguiente se muestra el uso de este miembro. En el ejemplo, un controlador de eventos informa sobre la aparición del FormClosing evento. Este informe le ayuda a aprender cuándo se produce el evento y puede ayudarle a depurar. Para informar sobre varios eventos o eventos que se producen con frecuencia, considere la posibilidad de reemplazar MessageBox.Show por Console.WriteLine o anexar el mensaje a una línea TextBoxmúltiple.
Para ejecutar el código de ejemplo, péguelo en un proyecto que contenga una instancia de tipo Form denominada Form1
. A continuación, asegúrese de que el controlador de eventos está asociado al 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
Comentarios
El FormClosing evento se produce cuando se cierra el formulario. Cuando se cierra un formulario, se elimina, liberando todos los recursos asociados al formulario. Si cancela este evento, el formulario permanece abierto. Para cancelar el cierre de un formulario, establezca la Cancel propiedad del FormClosingEventArgs objeto pasado al controlador de eventos en true
.
Cuando se muestra un formulario como un cuadro de diálogo modal, al hacer clic en el botón Cerrar (el botón con una X en la esquina superior derecha del formulario), el formulario se ocultará y la DialogResult propiedad se establecerá DialogResult.Cancel
en . Puede invalidar el valor asignado a la DialogResult propiedad cuando el usuario hace clic en el botón Cerrar estableciendo la DialogResult propiedad en un controlador de eventos para el FormClosing evento del formulario.
Nota
Cuando se llama al Close método en una Form ventana que se muestra como modela, no se puede llamar al Show método para que el formulario sea visible, porque los recursos del formulario ya se han liberado. Para ocultar un formulario y, a continuación, hacer que sea visible, use el Hide método .
Si el formulario es un formulario primario de interfaz de varios documentos (MDI), los FormClosing eventos de todos los formularios secundarios MDI se generan antes de que se genere el evento del formulario primario MDI FormClosing . Del mismo modo, los FormClosed eventos de todos los formularios secundarios MDI se generan antes de que se genere el FormClosed evento del formulario primario MDI. Cancelar el FormClosing evento de un formulario secundario MDI no impide que se genere el FormClosing evento del formulario primario MDI. Sin embargo, al cancelar el evento se establecerá true
en la Cancel propiedad de la FormClosingEventArgs clase que se pasa como parámetro al formulario primario. Para forzar que se cierren todos los formularios primarios y secundarios de MDI, establezca la Cancel propiedad false
en en en el formulario primario MDI.
Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.