Window.Closing Esemény
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Közvetlenül a meghívás után Close() következik be, és kezelhető az ablak bezárásának megszakításához.
public:
event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
member this.Closing : System.ComponentModel.CancelEventHandler
Public Custom Event Closing As CancelEventHandler
Eseménytípus
Kivételek
Visibility be van állítva, vagy Show(), ShowDialog()vagy Close() egy ablak bezárásakor hívja meg.
Példák
Az alábbi példa egy Window olyan példát mutat be, amely meghatározza, hogy szükség van-e felhasználói beavatkozásra a bezárásához.
<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
Megjegyzések
Closing kezelhető, hogy észlelje, ha egy ablak bezárva van (például mikor Close van meghívva). Emellett Closing az ablak bezárásának megakadályozására is használható. Ha meg szeretné akadályozni egy ablak bezárását, állítsa az Cancel argumentum tulajdonságát a CancelEventArgs következőre true: .
Az Closing esemény akkor jön létre, amikor Close meghívják, ha egy ablak Bezárás gombjára kattint, vagy ha a felhasználó lenyomja az ALT+F4 billentyűkombinációt.
Ha a tulajdonos Showablaka megnyitott egy saját ablakot, és a tulajdonos ablaka bezárult, a tulajdonos ablak eseménye Closing nem jön létre. Ha egy ablak tulajdonosa bezárva van (lásd Owner), Closing akkor a tulajdonos nem emeli ki a saját ablakát.
Ha Shutdown a rendszer meghívja, az Closing egyes ablakok eseménye fel lesz emelve. Ha Closing azonban a rendszer megszakítja a lemondást, a rendszer figyelmen kívül hagyja a lemondást.
Ha egy munkamenet azért fejeződik be, mert egy felhasználó kijelentkezik vagy leáll, Closing nem jön létre; az alkalmazás bezárását megszakító kód implementálásához kezelje SessionEnding .
Ha egy alkalmazás élettartama alatt többször is meg szeretne jeleníteni és elrejteni egy ablakot, és nem szeretné minden alkalommal újból megjeleníteni az ablakot, kezelheti az Closing eseményt, megszakíthatja, és meghívhatja a Hide metódust. Ezután meghívhatja Show ugyanazt a példányt, hogy újra megnyissa.