(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Window.Closing-Ereignis

Tritt unmittelbar nach dem Aufruf von Close auf und kann behandelt werden, um das Schließen des Fensters abzubrechen.

Namespace:  System.Windows
Assembly:  PresentationFramework (in PresentationFramework.dll)
XMLNS für XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation

public event CancelEventHandler Closing
<object Closing="CancelEventHandler" .../>

AusnahmeBedingung
InvalidOperationException

Während ein Fenster schließt, wird Visibility festgelegt, oder Show, ShowDialog oder Close wird aufgerufen.

Closing kann behandelt werden, um zu ermitteln, wenn ein Fenster geschlossen wird (z. B. beim Aufruf von Close). Zudem kann Closing verwendet werden, um das Schließen eines Fensters zu verhindern. Um das Schließen eines Fensters zu verhindern, können Sie die Cancel-Eigenschaft des CancelEventArgs-Arguments auf true festlegen.

Das Closing-Ereignis wird ausgelöst, wenn Close aufgerufen wird, auf die Schaltfläche zum Schließen eines Fensters geklickt wird oder der Benutzer ALT+F4 drückt.

Wenn ein Besitzfenster vom zugehörigen Besitzerfenster mithilfe von Show geöffnet wurde und das Besitzerfenster geschlossen wird, wird das Closing-Ereignis des Besitzfensters nicht ausgelöst. Wenn der Besitzer eines Fensters geschlossen wird (siehe Owner), wird Closing für das Besitzfenster nicht ausgelöst.

Wenn kein Aufruf von Shutdown erfolgt, wird das Closing-Ereignis für jedes Fenster ausgelöst. Wenn Closing abgebrochen wird, wird das Abbrechen jedoch ignoriert.

Wenn eine Sitzung beendet wird, weil sich ein Benutzer abmeldet oder die Anwendung beendet wird, wird Closing nicht ausgelöst. Behandeln Sie SessionEnding, um Code zu implementieren, der das Schließen der Anwendung abbricht.

Wenn Sie ein Fenster während der Lebensdauer einer Anwendung mehrmals anzeigen und ausblenden, aber das Fenster nicht bei jedem Anzeigen neu instanziieren möchten, können Sie das Closing-Ereignis behandeln, dieses abbrechen und die Hide-Methode aufrufen. Anschließend können Sie Show für dieselbe Instanz aufrufen, um diese erneut zu öffnen.

Im folgenden Beispiel wird ein Window veranschaulicht, das ermittelt, ob zum Schließen ein Benutzereingriff erforderlich ist.


<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"  
    >


...


</Window>




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


...


        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



using System; // EventArgs
using System.ComponentModel; // CancelEventArgs
using System.Windows; // window

namespace CSharp
{
    public partial class DataWindow : Window
    {
        // Is data dirty
        bool isDataDirty = false;


...


        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;
                }
            }
        }
    }
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft