Form.FormClosing Evento

Definición

Se produce antes de cerrar el formulario.Occurs before the form is closed.

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 

Ejemplos

En el siguiente ejemplo se muestra el uso de este miembro.The following example demonstrates the use of this member. En el ejemplo, un controlador de eventos informa sobre la aparición del evento FormClosing.In the example, an event handler reports on the occurrence of the FormClosing event. Este informe le ayuda a saber cuándo se produce el evento y puede ayudarle a depurar.This report helps you to learn when the event occurs and can assist you in debugging. Para notificar varios eventos o eventos que se producen con frecuencia, considere la posibilidad de reemplazar MessageBox.Show por Console.WriteLine o anexar el mensaje a un TextBoxmultilínea.To report on multiple events or on events that occur frequently, consider replacing MessageBox.Show with Console.WriteLine or appending the message to a multiline TextBox.

Para ejecutar el código de ejemplo, péguelo en un proyecto que contenga una instancia de tipo Form denominada Form1.To run the example code, paste it into a project that contains an instance of type Form named Form1. A continuación, asegúrese de que el controlador de eventos está asociado al evento FormClosing.Then ensure that the event handler is associated with the FormClosing event.

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 evento FormClosing se produce cuando se está cerrando el formulario.The FormClosing event occurs as the form is being closed. Cuando se cierra un formulario, se desecha y se liberan todos los recursos asociados al formulario.When a form is closed, it is disposed, releasing all resources associated with the form. Si cancela este evento, el formulario permanece abierto.If you cancel this event, the form remains opened. Para cancelar el cierre de un formulario, establezca la propiedad Cancel de la FormClosingEventArgs que se pasa al controlador de eventos a true.To cancel the closure of a form, set the Cancel property of the FormClosingEventArgs passed to your event handler to true.

Cuando un formulario se muestra 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), se oculta el formulario y se establece la propiedad DialogResult en DialogResult.Cancel.When a form is displayed as a modal dialog box, clicking the Close button (the button with an X at the upper-right corner of the form) causes the form to be hidden and the DialogResult property to be set to DialogResult.Cancel. Puede invalidar el valor asignado a la propiedad DialogResult cuando el usuario hace clic en el botón cerrar estableciendo la propiedad DialogResult en un controlador de eventos para el evento FormClosing del formulario.You can override the value assigned to the DialogResult property when the user clicks the Close button by setting the DialogResult property in an event handler for the FormClosing event of the form.

Nota

Cuando se llama al método Close en un Form que se muestra como una ventana no modal, no se puede llamar al método Show para que el formulario sea visible, ya que los recursos del formulario ya se han liberado.When the Close method is called on a Form displayed as a modeless window, you cannot call the Show method to make the form visible, because the form's resources have already been released. Para ocultar un formulario y, a continuación, hacer que esté visible, use el método Hide.To hide a form and then make it visible, use the Hide method.

Si el formulario es un formulario primario de interfaz de múltiples documentos (MDI), los eventos de FormClosing de todos los formularios MDI secundarios se generan antes de que se produzca el evento de FormClosing del formulario MDI primario.If the form is a multiple-document interface (MDI) parent form, the FormClosing events of all MDI child forms are raised before the MDI parent form's FormClosing event is raised. Del mismo modo, los eventos de FormClosed de todos los formularios MDI secundarios se generan antes de que se produzca el evento de FormClosed del formulario primario MDI.Likewise, the FormClosed events of all MDI child forms are raised before the FormClosed event of the MDI parent form is raised. Cancelar el FormClosing evento de un formulario MDI secundario no impide que se genere el evento de FormClosing del formulario primario MDI.Canceling the FormClosing event of an MDI child form does not prevent the FormClosing event of the MDI parent form from being raised. Sin embargo, si se cancela el evento, se establecerá en true la propiedad Cancel de la clase FormClosingEventArgs que se pasa como un parámetro al formulario primario.However, canceling the event will set to true the Cancel property of the FormClosingEventArgs class that is passed as a parameter to the parent form. Para forzar que todos los formularios MDI primarios y secundarios se cierren, establezca la propiedad Cancel en false en el formulario primario MDI.To force all MDI parent and child forms to close, set the Cancel property to false in the MDI parent form.

Para obtener más información sobre el manejo de eventos, consulte controlar y provocar eventos.For more information about handling events, see Handling and Raising Events.

Se aplica a

Consulte también: