Window.Closing Händelse
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Inträffar direkt efter Close() anropas och kan hanteras för att avbryta stängning av fönster.
public:
event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
member this.Closing : System.ComponentModel.CancelEventHandler
Public Custom Event Closing As CancelEventHandler
Händelsetyp
Undantag
Visibility anges, eller Show(), ShowDialog()eller Close() anropas när ett fönster stängs.
Exempel
I följande exempel visas en Window som avgör om användaren måste ingripa för att stängas.
<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
Kommentarer
Closing kan hanteras för att identifiera när ett fönster stängs (till exempel när Close anropas). Dessutom Closing kan användas för att förhindra att ett fönster stängs. Om du vill förhindra att ett fönster stängs kan du ange Cancel egenskapen för CancelEventArgs argumentet till true.
Händelsen Closing utlöses när Close anropas, om knappen Stäng i ett fönster klickas eller om användaren trycker på ALT+F4.
Om ett ägt fönster öppnades av dess ägarfönster med hjälp av Show, och ägarfönstret är stängt, utlöses inte det ägda fönstrets Closing händelse. Om ägaren till ett fönster är stängd (se Owner), Closing aktiveras inte i det ägda fönstret.
Om Shutdown anropas Closing utlöses händelsen för varje fönster. Om Closing avbryts ignoreras dock annulleringen.
Om en session avslutas på grund av att en användare loggar ut eller stängs av, Closing aktiveras inte; hantera SessionEnding för att implementera kod som avbryter programstängningen.
Om du vill visa och dölja ett fönster flera gånger under programmets livslängd och inte vill återställa fönstret varje gång du visar det, kan du hantera händelsen, avbryta den Closing och anropa Hide metoden. Sedan kan du anropa Show samma instans för att öppna den igen.