Een venster of dialoogvenster sluiten (WPF .NET)
In dit artikel vindt u informatie over de verschillende manieren om een venster of dialoogvenster te sluiten. Een gebruiker kan een venster sluiten met behulp van de elementen in het niet-clientgebied, met inbegrip van het volgende:
- Het item van het menu System sluiten.
- Druk op Alt + F4.
- Druk op de knop sluiten.
- Druk op ESC wanneer op een knop de eigenschap IsCancel is ingesteld op
true
in een modaal venster.
Bij het ontwerpen van een venster, zorg voor meer mechanismen in het gedeelte voor de gebruiker om een venster te sluiten. Enkele van de algemene ontwerpelementen in een venster dat wordt gebruikt om het te sluiten, zijn onder andere:
- Een -item afsluiten in het menu Bestand, meestal voor hoofdvensters van toepassingen.
- Een -item sluiten in het menu Bestand, meestal in een secundair toepassingsvenster.
- Een Annuleren-knop, meestal op een modaal dialoogvenster.
- Een Sluitknop, meestal in een modeless dialoogvenster.
Belangrijk
Zodra een venster is gesloten, kan hetzelfde object exemplaar niet worden gebruikt om het venster opnieuw te openen.
Zie voor meer informatie over het leven van een venster Overzicht van WPF-vensters: Levensduur van vensters.
Een modaal venster sluiten
Wanneer u een venster sluit dat is geopend met de methode ShowDialog, stelt u de eigenschap DialogResult in op respectievelijk true
of false
om de status 'geaccepteerd' of 'geannuleerd' aan te geven. Zodra de eigenschap DialogResult
is ingesteld op een waarde, wordt het venster gesloten. De volgende code laat zien hoe u de eigenschap DialogResult
instelt:
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
U kunt ook de methode Close aanroepen. Als de methode Close
wordt gebruikt, wordt de eigenschap DialogResult ingesteld op false
.
Zodra een venster is gesloten, kan het niet opnieuw worden geopend met dezelfde objectinstantie. Als u hetzelfde venster probeert weer te geven, wordt er een InvalidOperationException gegenereerd. Maak in plaats daarvan een nieuw exemplaar van het venster en open het.
Een niet-modaal venster sluiten
Wanneer u een venster sluit dat is geopend met de methode Show, gebruikt u de methode Close. De volgende code laat zien hoe u een modusloos venster sluit:
private void closeButton_Click(object sender, RoutedEventArgs e) =>
Close();
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs)
Close()
End Sub
Sluiten met IsCancel
De eigenschap Button.IsCancel kan worden ingesteld op true
om de ESC-toets in te schakelen om het venster automatisch te sluiten. Dit werkt alleen wanneer het venster wordt geopend met ShowDialog methode.
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
Een venster verbergen
In plaats van een venster te sluiten, kan een venster worden verborgen met de methode Hide. Een verborgen venster kan opnieuw worden geopend, in tegenstelling tot een gesloten venster. Als u een exemplaar van een vensterobject opnieuw gaat gebruiken, verbergt u het venster in plaats van het te sluiten. De volgende code laat zien hoe u een venster verbergt:
private void saveButton_Click(object sender, RoutedEventArgs e) =>
Hide();
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs)
Hide()
End Sub
Annuleren, sluiten en verbergen
Als u uw knoppen hebt ontworpen om een venster te verbergen in plaats van het venster te sluiten, kan de gebruiker dit nog steeds omzeilen en het venster sluiten. De Sluit item van het systeemmenu en de knop sluiten van het niet-clientgebied van het venster, sluit het venster in plaats van het te verbergen. Houd rekening met dit scenario wanneer u een venster wilt verbergen in plaats van het te sluiten.
Voorzichtigheid
Als een venster modaal wordt weergegeven met ShowDialog, wordt de eigenschap DialogResult ingesteld op null
wanneer het venster is verborgen. U moet de status weer doorgeven aan de aanroepende code door uw eigen eigenschap toe te voegen aan het venster.
Wanneer een venster wordt gesloten, wordt de gebeurtenis Closing gegenereerd. De handler wordt doorgegeven aan een CancelEventArgs, waarmee de eigenschap Cancel wordt geïmplementeerd. Stel deze eigenschap in op true
om te voorkomen dat een venster wordt gesloten. De volgende code laat zien hoe u de sluiting annuleert en in plaats daarvan het venster verbergt:
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
Het kan voorkomen dat u een venster niet wilt verbergen, maar dat de gebruiker het venster niet kan sluiten. Zie Overzicht van WPF-vensters: Venstersluiting annulerenvoor meer informatie.
Zie ook
.NET Desktop feedback