Sdílet prostřednictvím


Window.Closing Událost

Definice

Nastane přímo po Close() zavolání a lze ji zpracovat pro zrušení uzavření okna.

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

Event Type

Výjimky

Visibilityje nastavena, nebo Show()ShowDialog(), nebo Close() je volána při zavření okna.

Příklady

Následující příklad ukazuje Window , zda musí zásah uživatele zavřít.

<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

Poznámky

Closing lze zpracovat ke zjištění, kdy je okno zavřené (například při Close zavolání). Kromě toho lze použít k tomu, Closing aby se zabránilo zavření okna. Chcete-li zabránit zavření okna, můžete nastavit Cancel vlastnost argumentu CancelEventArgs na true.

Událost Closing je vyvolána při Close zavolání, pokud je na tlačítko Zavřít okna kliknuto nebo pokud uživatel stiskne kombinaci kláves ALT+F4.

Pokud vlastní okno otevřelo okno vlastníka pomocí Showokna vlastníka a okno vlastníka je zavřené, událost vlastněného okna Closing se nevyvolá. Pokud je vlastník okna zavřený (viz), OwnerClosing není vyvolán ve vlastnictví okna.

Pokud Shutdown je volána, Closing je vyvolána událost pro každé okno. Pokud Closing je však zrušení zrušeno, zrušení se ignoruje.

Pokud relace skončí, protože uživatel se odhlásí nebo vypne, Closing není vyvolán; popisovač SessionEnding implementace kódu, který zruší uzavření aplikace.

Pokud chcete během životnosti aplikace zobrazit a skrýt okno několikrát a nechcete okno při každém zobrazení znovu zavést, můžete zpracovat Closing událost, zrušit ji a volat metodu Hide . Potom můžete zavolat Show stejnou instanci a znovu ji otevřít.

Platí pro

Viz také