Window.Closing Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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.