Freigeben über


Window.Closing Ereignis

Definition

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 truefestlegen.

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.

Gilt für:

Weitere Informationen