Window.Closing Esemény

Definíció

Közvetlenül a meghívás után Close() következik be, és kezelhető az ablak bezárásának megszakításához.

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

Eseménytípus

Kivételek

Visibility be van állítva, vagy Show(), ShowDialog()vagy Close() egy ablak bezárásakor hívja meg.

Példák

Az alábbi példa egy Window olyan példát mutat be, amely meghatározza, hogy szükség van-e felhasználói beavatkozásra a bezárásához.

<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

Megjegyzések

Closing kezelhető, hogy észlelje, ha egy ablak bezárva van (például mikor Close van meghívva). Emellett Closing az ablak bezárásának megakadályozására is használható. Ha meg szeretné akadályozni egy ablak bezárását, állítsa az Cancel argumentum tulajdonságát a CancelEventArgs következőre true: .

Az Closing esemény akkor jön létre, amikor Close meghívják, ha egy ablak Bezárás gombjára kattint, vagy ha a felhasználó lenyomja az ALT+F4 billentyűkombinációt.

Ha a tulajdonos Showablaka megnyitott egy saját ablakot, és a tulajdonos ablaka bezárult, a tulajdonos ablak eseménye Closing nem jön létre. Ha egy ablak tulajdonosa bezárva van (lásd Owner), Closing akkor a tulajdonos nem emeli ki a saját ablakát.

Ha Shutdown a rendszer meghívja, az Closing egyes ablakok eseménye fel lesz emelve. Ha Closing azonban a rendszer megszakítja a lemondást, a rendszer figyelmen kívül hagyja a lemondást.

Ha egy munkamenet azért fejeződik be, mert egy felhasználó kijelentkezik vagy leáll, Closing nem jön létre; az alkalmazás bezárását megszakító kód implementálásához kezelje SessionEnding .

Ha egy alkalmazás élettartama alatt többször is meg szeretne jeleníteni és elrejteni egy ablakot, és nem szeretné minden alkalommal újból megjeleníteni az ablakot, kezelheti az Closing eseményt, megszakíthatja, és meghívhatja a Hide metódust. Ezután meghívhatja Show ugyanazt a példányt, hogy újra megnyissa.

A következőre érvényes:

Lásd még