Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie mehr über die verschiedenen Möglichkeiten zum Schließen eines Fensters oder Dialogfelds. Ein Benutzer kann ein Fenster mithilfe der Elemente im Nicht-Client-Bereich schließen, einschließlich der folgenden:
- Das Element Schließen im Menü System.
- Drücken von ALT+F4.
- Klicken auf die Schaltfläche Schließen.
- Drücken von ESC, wenn eine Schaltfläche in einem modalen Fenster die IsCancel-Eigenschaft auf
true
gesetzt hat.
Stellen Sie beim Entwerfen eines Fensters mehr Mechanismen für den Clientbereich bereit, um ein Fenster zu schließen. Einige der allgemeinen Entwurfselemente in einem Fenster, das zum Schließen verwendet wird, umfassen Folgendes:
- Das Element Beenden im Menü Datei, i. d. R. für Hauptanwendungsfenster.
- Das Element Schließen im Menü Datei, i. d. R. in einem sekundären Anwendungsfenster.
- Das Element Abbrechen, i. d. R. in einem modalen Dialogfeld.
- Das Element Schließen, i. d. R. in einem nicht modalen Dialogfeld.
Von Bedeutung
Nachdem ein Fenster geschlossen wurde, kann die gleiche Objektinstanz nicht zum erneuten Öffnen des Fensters verwendet werden.
Weitere Informationen zur Lebensdauer eines Fensters finden Sie unter Übersicht über WPF-Fenster: Fensterlebensdauer.
Schließen eines modalen Fensters
Wenn Sie ein Fenster schließen, das mit der ShowDialog-Methode geöffnet wurde, setzen Sie die DialogResult-Eigenschaft entweder auf true
für einen "akzeptierten" Zustand oder auf false
für einen "abgebrochenen" Zustand. Sobald die DialogResult
Eigenschaft auf einen Wert festgelegt ist, wird das Fenster geschlossen. Der folgende Code veranschaulicht das Festlegen der DialogResult
Eigenschaft:
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
Sie können die Close Methode auch aufrufen. Wenn die Close
Methode verwendet wird, wird die DialogResult-Eigenschaft auf false
gesetzt.
Nachdem ein Fenster geschlossen wurde, kann es nicht mit derselben Objektinstanz erneut geöffnet werden. Wenn Sie versuchen, dasselbe Fenster anzuzeigen, wird ein InvalidOperationException Fehler ausgelöst. Erstellen Sie stattdessen eine neue Instanz des Fensters, und öffnen Sie sie.
Modelless Fenster schließen
Wenn Sie ein Fenster schließen, das mit der Show Methode geöffnet wurde, verwenden Sie die Close Methode. Der folgende Code veranschaulicht das Schließen eines moduslosen Fensters:
private void closeButton_Click(object sender, RoutedEventArgs e) =>
Close();
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs)
Close()
End Sub
Schließen mit IsCancel
Die Button.IsCancel Eigenschaft kann so festgelegt werden, dass true
die ESC-Taste aktiviert wird, um das Fenster automatisch zu schließen. Dies funktioniert nur, wenn das Fenster mit ShowDialog methode geöffnet wird.
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
Ausblenden eines Fensters
Anstatt ein Fenster zu schließen, kann ein Fenster mit der Hide Methode ausgeblendet werden. Ein ausgeblendetes Fenster kann erneut geöffnet werden, im Gegensatz zu einem fenster, das geschlossen wurde. Wenn Sie eine Fensterobjektinstanz wiederverwenden möchten, blenden Sie das Fenster aus, anstatt es zu schließen. Der folgende Code veranschaulicht das Ausblenden eines Fensters:
private void saveButton_Click(object sender, RoutedEventArgs e) =>
Hide();
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs)
Hide()
End Sub
Abbrechen, Schließen und Ausblenden
Wenn Sie Ihre Schaltflächen so entworfen haben, dass sie ein Fenster ausblenden, anstatt es zu schließen, kann der Benutzer dies weiterhin umgehen und das Fenster schließen. Das Element "Schließen" des Systemmenüs und die Schaltfläche "Schließen" im nicht-kundenspezifischen Bereich des Fensters schließen das Fenster, anstatt es auszublenden. Berücksichtigen Sie dieses Szenario, wenn Sie beabsichtigen, ein Fenster auszublenden, anstatt es zu schließen.
Vorsicht
Wenn ein Fenster modal mit ShowDialog angezeigt wird, wird die Eigenschaft DialogResult auf null
festgelegt, wenn das Fenster ausgeblendet ist. Sie müssen den Zustand dem aufrufenden Code zurückmelden, indem Sie dem Fenster eine eigene Eigenschaft hinzufügen.
Wenn ein Fenster geschlossen wird, wird das Closing Ereignis ausgelöst. Der Handler wird einem CancelEventArgs übergeben, das die Cancel Eigenschaft implementiert. Legen Sie diese Eigenschaft fest, um zu verhindern, true
dass ein Fenster geschlossen wird. Der folgende Code veranschaulicht, wie das Schließen abgebrochen und stattdessen das Fenster ausgeblendet wird:
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
Es kann vorkommen, dass Sie ein Fenster nicht ausblenden möchten, aber tatsächlich verhindern, dass der Benutzer es schließt. Weitere Informationen finden Sie unter Übersicht über WPF-Fenster: Abbrechen des Schließens von Fenstern.
Siehe auch
.NET Desktop feedback