Window.Closing Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastane přímo po Close() zavolání a lze ji zpracovat pro zrušení uzavření 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
Event Type
Výjimky
Visibilityje nastavena, nebo Show()ShowDialog(), nebo Close() je volána při zavření okna.
Příklady
Následující příklad ukazuje Window , zda musí zásah uživatele zavřít.
<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
Poznámky
Closing lze zpracovat ke zjištění, kdy je okno zavřené (například při Close zavolání). Kromě toho lze použít k tomu, Closing aby se zabránilo zavření okna. Chcete-li zabránit zavření okna, můžete nastavit Cancel vlastnost argumentu CancelEventArgs na true.
Událost Closing je vyvolána při Close zavolání, pokud je na tlačítko Zavřít okna kliknuto nebo pokud uživatel stiskne kombinaci kláves ALT+F4.
Pokud vlastní okno otevřelo okno vlastníka pomocí Showokna vlastníka a okno vlastníka je zavřené, událost vlastněného okna Closing se nevyvolá. Pokud je vlastník okna zavřený (viz), OwnerClosing není vyvolán ve vlastnictví okna.
Pokud Shutdown je volána, Closing je vyvolána událost pro každé okno. Pokud Closing je však zrušení zrušeno, zrušení se ignoruje.
Pokud relace skončí, protože uživatel se odhlásí nebo vypne, Closing není vyvolán; popisovač SessionEnding implementace kódu, který zruší uzavření aplikace.
Pokud chcete během životnosti aplikace zobrazit a skrýt okno několikrát a nechcete okno při každém zobrazení znovu zavést, můžete zpracovat Closing událost, zrušit ji a volat metodu Hide . Potom můžete zavolat Show stejnou instanci a znovu ji otevřít.