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í.
Vyskytuje se přímo po Close() zavolání a je možné ho vyřešit tak, aby se zavření okna zrušilo.
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
Visibility je nastaveno nebo Show(), ShowDialog()nebo Close() se volá, když se okno zavírá.
Příklady
Následující příklad ukazuje Window , který určuje, zda je nutné 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 zjistit, kdy je okno zavřené (například kdy Close je volána). Kromě toho Closing lze použít k zabránění zavření okna. Pokud chcete zabránit zavření okna, můžete vlastnost argumentu CancelCancelEventArgs nastavit na true
.
Událost Closing se vyvolá při Close zavolání, kliknutí na tlačítko Zavřít v okně nebo při stisknutí kombinace kláves ALT+F4.
Pokud vlastní okno otevřelo okno vlastníka pomocí Showa okno vlastníka je zavřené, událost vlastněného okna Closing se nevyvolá. Pokud je vlastník okna zavřený (viz Owner), Closing není ve vlastněném okně vyvolána.
Pokud Shutdown je volána, vyvolá se Closing událost pro každé okno. Pokud Closing se ale zruší, zrušení se ignoruje.
Pokud relace skončí, protože se uživatel odhlásí nebo vypne, není vyvolána; Closing rutina SessionEnding implementuje kód, který zruší uzavření aplikace.
Pokud chcete okno zobrazit a skrýt několikrát během životnosti aplikace a nechcete okno znovu nastavit pokaždé, když ho zobrazíte, můžete událost zpracovat Closing , zrušit ji a volat metodu Hide . Pak můžete zavolat Show na stejnou instanci a znovu ji otevřít.