Window.Closing Olay
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Çağrıldıktan hemen sonra Close() gerçekleşir ve pencere kapatma işlemini iptal etmek için işlenebilir.
public:
event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
member this.Closing : System.ComponentModel.CancelEventHandler
Public Custom Event Closing As CancelEventHandler
Olay Türü
Özel durumlar
Visibility bir pencere kapatılırken ayarlanır Show()veya , ShowDialog()veya Close() çağrılır.
Örnekler
Aşağıdaki örnek, kapatmak için kullanıcı müdahalesi gerekip gerekmediğini belirleyen bir Window gösterir.
<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
Açıklamalar
Closing bir pencerenin ne zaman kapatıldığını algılamak için işlenebilir (örneğin, çağrıldığında Close ). Ayrıca, Closing bir pencerenin kapanmasını önlemek için de kullanılabilir. Pencerenin kapanmasını önlemek için bağımsız değişkeninin CancelCancelEventArgs özelliğini olarak true
ayarlayabilirsiniz.
Olay Closing çağrıldığında Close , pencerenin Kapat düğmesine tıklandığında veya kullanıcı ALT+F4 tuşlarına bastığında tetiklenir.
Sahip olunan bir pencere sahip penceresi tarafından kullanılarak Showaçıldıysa ve sahip penceresi kapatılırsa, sahip olunan pencerenin Closing olayı tetiklenmez. Pencerenin sahibi kapalıysa (bkz Owner. ) Closing sahip olunan pencerede yükseltilmemiştir.
çağrılırsa Shutdown , Closing her pencere için olay oluşturulur. Ancak iptal edilirse Closing iptal yok sayılır.
Kullanıcı oturumu kapattığı veya kapattığı için oturumun sona ermesi durumunda Closing tetiklenmez; uygulama kapanışını iptal eden kodu uygulamak için işleyin SessionEnding .
Bir uygulamayı kullanım ömrü boyunca bir pencereyi birden çok kez göstermek ve gizlemek istiyorsanız ve pencereyi her gösterişinde yeniden göstermek istemiyorsanız, olayı işleyebilir Closing , iptal edebilir ve yöntemini çağırabilirsiniz Hide . Ardından, yeniden açmak için aynı örneği çağırabilirsiniz Show .