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 unmittelbar nach dem Aufruf von Close() 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
Während ein Fenster schließt, wird Visibility festgelegt, oder Show(), ShowDialog() oder Close() wird aufgerufen.
Beispiele
Im folgenden Beispiel wird eine Window veranschaulicht, die bestimmt, ob der 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 wenn der Benutzer ALT+F4 drückt.
Wenn ein besitzereigenes Fenster von seinem Besitzerfenster mit Showgeöffnet wurde und das Besitzerfenster geschlossen ist, wird das Ereignis des Closing besitzereigenen Fensters nicht ausgelöst. Wenn der Besitzer eines Fensters geschlossen ist (siehe Owner), Closing wird nicht im eigenen Fenster ausgelöst.
Wenn Shutdown aufgerufen wird, 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 nicht ausgelöst; Handle SessionEnding , um Code zu implementieren, der den Anwendungsverschluss abbricht.
Wenn Sie ein Fenster während der Lebensdauer einer Anwendung mehrmals anzeigen und ausblenden möchten, und Sie das Fenster nicht jedes Mal neu erstellen möchten, wenn Sie es anzeigen, können Sie das Closing Ereignis behandeln, es abbrechen und die Hide -Methode aufrufen. Anschließend können Sie auf demselben instance aufrufenShow, um sie erneut zu öffnen.