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

Definition

Tritt unmittelbar nach dem Aufruf von Close() auf und kann behandelt werden, 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

Während ein Fenster schließt, wird Visibility festgelegt, oder Show(), ShowDialog() oder Close() wird aufgerufen.Visibility is set, or Show(), ShowDialog(), or Close() is called while a window is closing.

Beispiele

Im folgenden Beispiel wird ein Window veranschaulicht, das bestimmt, ob ein Eingreifen des Benutzers erforderlich ist.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

Closingkann behandelt werden, um zu erkennen, wann ein Fenster geschlossen wird (z. Close b. wenn aufgerufen wird).Closing can be handled to detect when a window is being closed (for example, when Close is called). Außerdem kann Closing verwendet werden, um zu verhindern, dass ein Fenster geschlossen wird.Furthermore, Closing can be used to prevent a window from closing. Um zu verhindern, dass ein Fenster geschlossen wird, können Cancel Sie die- CancelEventArgs Eigenschaft des true-Arguments auf festlegen.To prevent a window from closing, you can set the Cancel property of the CancelEventArgs argument to true.

Das Closing -Ereignis wird ausgelöst Close , wenn aufgerufen wird, wenn auf die Schaltfläche Schließen eines Fensters geklickt wird oder wenn der Benutzer ALT + F4 drückt.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 im Besitz befindlichen Fenster durch das Besitzer Fenster Showvon geöffnet wurde und das Besitzer Fenster geschlossen wird, wird das- Closing Ereignis des eigenen Fensters 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 (siehe Owner), Closing wird nicht im eigenen Fenster ausgelöst.If the owner of a window is closed (see Owner), Closing is not raised on the owned window.

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

Wenn eine Sitzung beendet wird, weil ein Benutzer sich abmeldet oder herunter Closing fährt, wird nicht ausgelöst SessionEnding ; handle, um Code zu implementieren, der die Anwendungs Schließung abbricht.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 Sie ein Fenster während der Lebensdauer einer Anwendung mehrmals ein-und ausblenden möchten, und Sie das Fenster nicht jedes Mal neu installieren möchten, wenn Sie es anzeigen, können Sie das Closing -Ereignis behandeln, Abbrechen und die Hide -Methode aufzurufen.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 können Sie für dieselbe Show Instanz aufzurufen, um Sie erneut zu öffnen.Then, you can call Show on the same instance to reopen it.

Gilt für:

Siehe auch