Window.Closing Zdarzenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Występuje bezpośrednio po Close() wywołaniu i można go obsłużyć w celu anulowania zamknięcia okna.
public:
event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
member this.Closing : System.ComponentModel.CancelEventHandler
Public Custom Event Closing As CancelEventHandler
Typ zdarzenia
Wyjątki
Visibilityparametr jest ustawiony, lub Show()ShowDialog(), lub Close() jest wywoływany, gdy okno jest zamykane.
Przykłady
W poniższym przykładzie pokazano element Window , który określa, czy wymaga interwencji użytkownika w celu zamknięcia.
<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
Uwagi
Closing można obsługiwać, aby wykryć, kiedy okno jest zamykane (na przykład po Close wywołaniu). Ponadto można użyć polecenia , Closing aby zapobiec zamykaniu okna. Aby zapobiec zamykaniu okna, możesz ustawić Cancel właściwość argumentu CancelEventArgs na true
.
Zdarzenie Closing jest wywoływane po Close wywołaniu, jeśli zostanie kliknięta przycisk Zamknij okna lub jeśli użytkownik naciśnie alt+F4.
Jeśli okno własności zostało otwarte przez okno właściciela przy użyciu polecenia Show, a okno właściciela jest zamknięte, zdarzenie okna własności Closing nie jest zgłaszane. Jeśli właściciel okna jest zamknięty (zobacz Owner), Closing nie jest wywoływany w oknie należącym do użytkownika.
Jeśli Shutdown jest wywoływana, zdarzenie Closing dla każdego okna jest zgłaszane. Jeśli Closing jednak anulowanie zostanie anulowane, anulowanie zostanie zignorowane.
Jeśli sesja zostanie zakończona, ponieważ użytkownik wyloguje się lub zamknie, nie zostanie podniesiony; Closing obsługa SessionEnding w celu zaimplementowania kodu, który anuluje zamknięcie aplikacji.
Jeśli chcesz pokazać i ukryć okno wiele razy w okresie istnienia aplikacji i nie chcesz ponownie przedstawiać okna za każdym razem, gdy zostanie ono wyświetlone, możesz obsłużyć Closing zdarzenie, anulować je i wywołać metodę Hide . Następnie możesz wywołać Show to samo wystąpienie, aby otworzyć je ponownie.