Partager via


Window.Closing Événement

Définition

Se produit directement après l'appel de Close() et peut être géré pour annuler la fermeture de la fenêtre.

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

Type d'événement

Exceptions

Visibility est défini, ou Show(), ShowDialog() ou Close() est appelé pendant la fermeture d'une fenêtre.

Exemples

L’exemple suivant illustre un Window qui détermine s’il a besoin d’une intervention de l’utilisateur pour se fermer.

<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

Remarques

Closing peut être géré pour détecter quand une fenêtre est fermée (par exemple, quand Close est appelée). En outre, Closing peut être utilisé pour empêcher la fermeture d’une fenêtre. Pour empêcher la fermeture d’une fenêtre, vous pouvez affecter à la Cancel propriété de l’argument la CancelEventArgs valeur true.

L’événement Closing est déclenché quand Close est appelé, si l’utilisateur clique sur le bouton Fermer d’une fenêtre ou si l’utilisateur appuie sur ALT+F4.

Si une fenêtre propriétaire a été ouverte par sa fenêtre propriétaire à l’aide Showde et que la fenêtre propriétaire est fermée, l’événement de Closing la fenêtre détenue n’est pas déclenché. Si le propriétaire d’une fenêtre est fermé (voir Owner), Closing n’est pas déclenché sur la fenêtre propriétaire.

Si Shutdown est appelé, l’événement Closing pour chaque fenêtre est déclenché. Toutefois, si Closing est annulé, l’annulation est ignorée.

Si une session se termine parce qu’un utilisateur se déconnecte ou s’arrête, Closing n’est pas déclenché ; handle SessionEnding pour implémenter du code qui annule la fermeture de l’application.

Si vous souhaitez afficher et masquer une fenêtre plusieurs fois pendant la durée de vie d’une application, et que vous ne souhaitez pas réinstanter la fenêtre chaque fois que vous l’affichez, vous pouvez gérer l’événement, l’annuler Closing et appeler la Hide méthode . Ensuite, vous pouvez appeler Show sur le même instance pour le rouvrir.

S’applique à

Voir aussi