Lire en anglais

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.

C#
public event System.ComponentModel.CancelEventHandler Closing;

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.

XAML
<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>
C#
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;
                }
            }
        }
    }
}

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 à

Produit Versions
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

Voir aussi