Window.Closing Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Tritt direkt nach Close() dem Aufruf auf und kann behandelt werden, um das Schließen des Fensters abzubrechen.
public:
event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
member this.Closing : System.ComponentModel.CancelEventHandler
Public Custom Event Closing As CancelEventHandler
Ereignistyp
Ausnahmen
Visibilitywird festgelegt oder Show()ShowDialog(), oder Close() wird aufgerufen, während ein Fenster geschlossen wird.
Beispiele
Im folgenden Beispiel wird veranschaulicht Window , ob ein Benutzereingriff geschlossen werden muss.
<Window
x:Class="CSharp.DataWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Closing="DataWindow_Closing"
>
<Grid>
<TextBox Name="documentTextBox" AcceptsReturn="True" AcceptsTab="True" TextChanged="documentTextBox_TextChanged"></TextBox>
</Grid>
</Window>
using System; // EventArgs
using System.ComponentModel; // CancelEventArgs
using System.Windows; // window
namespace CSharp
{
public partial class DataWindow : Window
{
// Is data dirty
bool isDataDirty = false;
public DataWindow()
{
InitializeComponent();
}
void documentTextBox_TextChanged(object sender, EventArgs e)
{
this.isDataDirty = true;
}
void DataWindow_Closing(object sender, CancelEventArgs e)
{
MessageBox.Show("Closing called");
// If data is dirty, notify user and ask for a response
if (this.isDataDirty)
{
string msg = "Data is dirty. Close without saving?";
MessageBoxResult result =
MessageBox.Show(
msg,
"Data App",
MessageBoxButton.YesNo,
MessageBoxImage.Warning);
if (result == MessageBoxResult.No)
{
// If user doesn't want to close, cancel closure
e.Cancel = true;
}
}
}
}
}
Imports System ' EventArgs
Imports System.ComponentModel ' CancelEventArgs
Imports System.Windows ' window
Namespace VisualBasic
Partial Public Class DataWindow
Inherits Window
' Is data dirty
Private isDataDirty As Boolean = False
Public Sub New()
InitializeComponent()
End Sub
Private Sub documentTextBox_TextChanged(ByVal sender As Object, ByVal e As EventArgs)
Me.isDataDirty = True
End Sub
Private Sub DataWindow_Closing(ByVal sender As Object, ByVal e As CancelEventArgs)
MessageBox.Show("Closing called")
' If data is dirty, notify user and ask for a response
If Me.isDataDirty Then
Dim msg As String = "Data is dirty. Close without saving?"
Dim result As MessageBoxResult = MessageBox.Show(msg, "Data App", MessageBoxButton.YesNo, MessageBoxImage.Warning)
If result = MessageBoxResult.No Then
' If user doesn't want to close, cancel closure
e.Cancel = True
End If
End If
End Sub
End Class
End Namespace
Hinweise
Closing kann behandelt werden, um zu erkennen, wann ein Fenster geschlossen wird (z. B. wenn Close aufgerufen wird). Darüber hinaus kann verwendet werden, um zu verhindern, Closing dass ein Fenster geschlossen wird. Um zu verhindern, dass ein Fenster geschlossen wird, können Sie die Cancel Eigenschaft des CancelEventArgs Arguments auf true" festlegen.
Das Closing Ereignis wird ausgelöst, wenn Close aufgerufen wird, wenn auf die Schaltfläche "Schließen" eines Fensters geklickt wird oder der Benutzer ALT+F4 drückt.
Wenn ein eigenes Fenster mithilfe des Besitzerfensters Showgeöffnet wurde und das Besitzerfenster geschlossen wird, wird das Ereignis des eigenen Fensters Closing nicht ausgelöst. Wenn der Besitzer eines Fensters geschlossen ist (siehe Owner), Closing wird nicht im eigenen Fenster ausgelöst.
Wird Shutdown dieses Ereignis aufgerufen, wird das Closing Ereignis für jedes Fenster ausgelöst. Wenn Closing jedoch abgebrochen wird, wird der Abbruch ignoriert.
Wenn eine Sitzung endet, weil sich ein Benutzer abmeldet oder heruntergefahren wird, Closing wird er nicht ausgelöst. Behandeln Sie das SessionEnding Implementieren von Code, der das Schließen der Anwendung abbricht.
Wenn Sie ein Fenster während der Lebensdauer einer Anwendung mehrmals ein- und ausblenden möchten und das Fenster nicht jedes Mal erneut angeben möchten, wenn Sie es anzeigen, können Sie das Closing Ereignis behandeln, abbrechen und die Hide Methode aufrufen. Anschließend können Sie dieselbe Instanz aufrufen Show , um sie erneut zu öffnen.