Window.Closing Window.Closing Window.Closing Window.Closing Event

Definition

Tritt unmittelbar nach dem Close() wird aufgerufen, und verarbeitet werden können, um das Schließen des Fensters abzubrechen.Occurs directly after Close() is called, and can be handled to cancel window closure.

public:
 event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
member this.Closing : System.ComponentModel.CancelEventHandler 
Public Custom Event Closing As CancelEventHandler 

Ausnahmen

Visibility festgelegt ist, oder Show(), ShowDialog(), oder Close() wird aufgerufen, während ein Fenster geschlossen wird.Visibility is set, or Show(), ShowDialog(), or Close() is called while a window is closing.

Beispiele

Das folgende Beispiel zeigt eine Window , der bestimmt, ob schließen ein Benutzereingriff erforderlich.The following example demonstrates a Window that determines whether it needs user intervention to close.

<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 können behandelt werden, um zu ermitteln, wenn ein Fenster geschlossen wird (z. B. wenn Close aufgerufen wird).Closing can be handled to detect when a window is being closed (for example, when Close is called). Darüber hinaus Closing können verwendet werden, um zu verhindern, dass ein Fenster schließen.Furthermore, Closing can be used to prevent a window from closing. Zum Schließen ein Fensters zu verhindern, Sie können festlegen, die Cancel Eigenschaft der CancelEventArgs Argument true.To prevent a window from closing, you can set the Cancel property of the CancelEventArgs argument to true.

Die Closing Ereignis wird ausgelöst, wenn Close aufgerufen wird, wenn ein Fenster auf die Schaltfläche "Schließen" geklickt wird oder wenn der Benutzer ALT + F4 drücken.The Closing event is raised when Close is called, if a window's Close button is clicked, or if the user presses ALT+F4.

Wenn ein zum Besitzer gehörige Fenster, mithilfe von dessen Besitzer Fenster geöffnet wurde Show, und der Besitzer geschlossen wird, die im Besitz des Fensters Closing Ereignis wird nicht ausgelöst.If an owned window was opened by its owner window using Show, and the owner window is closed, the owned window's Closing event is not raised. Wenn der Besitzer eines Fensters geschlossen wird (finden Sie unter Owner), Closing nicht für das Fenster im Besitz des Benutzers ausgelöst wird.If the owner of a window is closed (see Owner), Closing is not raised on the owned window.

Wenn Shutdown aufgerufen wird, die Closing Ereignis für jedes Fenster wird ausgelöst.If Shutdown is called, the Closing event for each window is raised. Aber wenn Closing wird abgebrochen, Abbruch wird ignoriert.However, if Closing is canceled, cancellation is ignored.

Wenn eine Sitzung beendet, weil ein Benutzer abmeldet oder wird heruntergefahren, Closing wird nicht ausgelöst; behandeln SessionEnding zur Implementierung von Code, in dem Schließen der Anwendung abgebrochen.If a session ends because a user logs off or shuts down, Closing is not raised; handle SessionEnding to implement code that cancels application closure.

Wenn auf Sie ein- und Ausblenden von einem Fenster mehrere Male während der Lebensdauer einer Anwendung werden sollen, und nicht das Fenster jedes Mal neu instanziieren möchten Sie diese anzeigen, können Sie behandeln die Closing -Ereignis, brechen Sie den Befehl, und rufen Sie die Hide Methode.If you want to show and hide a window multiple times during the lifetime of an application, and you don't want to reinstantiate the window each time you show it, you can handle the Closing event, cancel it, and call the Hide method. Anschließend rufen Sie Show auf der gleichen Instanz aus, um es erneut zu öffnen.Then, you can call Show on the same instance to reopen it.

Gilt für:

Siehe auch