Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, obtendrá información sobre las distintas formas de cerrar una ventana o un cuadro de diálogo. Un usuario puede cerrar una ventana mediante los elementos del área que no son cliente, incluidos los siguientes:
- Elemento Cerrar del menú Sistema .
- Presione ALT + F4.
- Presionando el botón Cerrar .
- Al presionar ESC cuando un botón tiene la propiedad IsCancel establecida en
true
en una ventana modal.
Al diseñar una ventana, proporcione más mecanismos al área cliente para cerrar una ventana. Algunos de los elementos de diseño comunes de una ventana que se usan para cerrarlo incluyen lo siguiente:
- Elemento Salir en el menú Archivo, normalmente para las ventanas principales de la aplicación.
- Un elemento Cerrar en el menú Archivo , normalmente en una ventana de aplicación secundaria.
- Un botón Cancelar , normalmente en un cuadro de diálogo modal.
- Un botón Cerrar , normalmente en un cuadro de diálogo modelado.
Importante
Una vez cerrada una ventana, no se puede usar la misma instancia de objeto para volver a abrir la ventana.
Para obtener más información sobre la duración de una ventana, vea Información general de las ventanas de WPF: Duración de la ventana.
Cerrar una ventana modal
Al cerrar una ventana que se abrió con el método ShowDialog, establezca la propiedad DialogResult en true
o false
para indicar un estado "aceptado" o "cancelado", respectivamente. En cuanto la DialogResult
propiedad se establece en un valor, la ventana se cierra. En el código siguiente se muestra cómo establecer la DialogResult
propiedad :
private void okButton_Click(object sender, RoutedEventArgs e) =>
DialogResult = true;
private void cancelButton_Click(object sender, RoutedEventArgs e) =>
DialogResult = false;
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
DialogResult = True
End Sub
Private Sub cancelButton_Click(sender As Object, e As RoutedEventArgs)
DialogResult = False
End Sub
También puede llamar al método Close. Si se usa el Close
método , la DialogResult propiedad se establece en false
.
Una vez cerrada una ventana, no se puede volver a abrir con la misma instancia de objeto. Si intenta mostrar la misma ventana, se produce una excepción InvalidOperationException. En su lugar, cree una nueva instancia de la ventana y ábrala.
Cerrar una ventana modeless
Al cerrar una ventana que se abrió con el Show método , use el Close método . En el código siguiente se muestra cómo cerrar una ventana modeless:
private void closeButton_Click(object sender, RoutedEventArgs e) =>
Close();
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs)
Close()
End Sub
Cerrar con IsCancel
La Button.IsCancel propiedad se puede establecer en true
para habilitar la clave ESC para cerrar automáticamente la ventana. Esto solo funciona cuando se abre la ventana con ShowDialog el método .
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
Ocultar una ventana
En lugar de cerrar una ventana, se puede ocultar una ventana con el Hide método . Se puede volver a abrir una ventana oculta, a diferencia de una ventana cerrada. Si va a reutilizar una instancia de objeto de ventana, oculte la ventana en lugar de cerrarla. En el código siguiente se muestra cómo ocultar una ventana:
private void saveButton_Click(object sender, RoutedEventArgs e) =>
Hide();
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs)
Hide()
End Sub
Cancelar cerrar y ocultar
Si ha diseñado los botones para ocultar una ventana en lugar de cerrarla, el usuario puede omitir esta ventana y cerrarla. El elemento Cerrar del menú del sistema y el botón Cerrar del área no cliente de la ventana cerrará la ventana en lugar de ocultarla. Tenga en cuenta este escenario cuando la intención es ocultar una ventana en lugar de cerrarla.
Precaución
Si se muestra una ventana de forma modal con ShowDialog, la DialogResult propiedad se establecerá en null
cuando la ventana esté oculta. Tendrá que volver a comunicar el estado al código de llamada agregando su propia propiedad a la ventana.
Cuando se cierra una ventana, se genera el Closing evento . El controlador recibe un CancelEventArgs, que implementa la propiedad Cancel. Establezca esa propiedad en true
para impedir que se cierre una ventana. En el código siguiente se muestra cómo cancelar el cierre y, en su lugar, ocultar la ventana:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Cancel the closure
e.Cancel = true;
// Hide the window
Hide();
}
Private Sub Window_Closing(sender As Object, e As ComponentModel.CancelEventArgs)
' Cancel the closure
e.Cancel = True
' Hide the window
Hide()
End Sub
Puede haber ocasiones en las que no quiera ocultar una ventana, pero evitar que el usuario lo cierre. Para obtener más información, vea Información general de las ventanas de WPF: Cancelar cierre de ventana.
Consulte también
- Introducción a las ventanas de WPF
- Introducción a los cuadros de diálogo
- Cómo abrir una ventana o un cuadro de diálogo
- System.Windows.Window.Close()
- System.Windows.Window.Closing
- System.Windows.Window.DialogResult
- System.Windows.Window.Hide()
- System.Windows.Window.Show()
- System.Windows.Window.ShowDialog()
.NET Desktop feedback