Freigeben über


Window.Closing Ereignis

Definition

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.

Gilt für:

Weitere Informationen