Window.Closing Kejadian
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Terjadi langsung setelah Close() dipanggil, dan dapat ditangani untuk membatalkan penutupan jendela.
public:
event System::ComponentModel::CancelEventHandler ^ Closing;
public event System.ComponentModel.CancelEventHandler Closing;
member this.Closing : System.ComponentModel.CancelEventHandler
Public Custom Event Closing As CancelEventHandler
Jenis Acara
Pengecualian
Visibility diatur, atau Show(), ShowDialog(), atau Close() dipanggil saat jendela ditutup.
Contoh
Contoh berikut menunjukkan Window yang menentukan apakah perlu intervensi pengguna untuk ditutup.
<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
Keterangan
Closing dapat ditangani untuk mendeteksi kapan jendela ditutup (misalnya, ketika Close dipanggil). Selain itu, Closing dapat digunakan untuk mencegah jendela ditutup. Untuk mencegah jendela ditutup, Anda dapat mengatur Cancel properti argumen ke CancelEventArgstrue
.
Peristiwa Closing dinaikkan ketika Close dipanggil, jika tombol Tutup jendela diklik, atau jika pengguna menekan ALT+F4.
Jika jendela yang dimiliki dibuka oleh jendela pemiliknya menggunakan Show, dan jendela pemilik ditutup, peristiwa jendela Closing yang dimiliki tidak dinaikkan. Jika pemilik jendela ditutup (lihat Owner), Closing tidak dinaikkan pada jendela yang dimiliki.
Jika Shutdown dipanggil, Closing peristiwa untuk setiap jendela dinaikkan. Namun, jika Closing dibatalkan, pembatalan diabaikan.
Jika sesi berakhir karena pengguna keluar atau dimatikan, Closing tidak dinaikkan; tangani SessionEnding untuk menerapkan kode yang membatalkan penutupan aplikasi.
Jika Anda ingin menampilkan dan menyembunyikan jendela beberapa kali selama masa pakai aplikasi, dan Anda tidak ingin menginstansiasi ulang jendela setiap kali Anda menampilkannya, Anda dapat menangani Closing peristiwa, membatalkannya, dan memanggil Hide metode . Kemudian, Anda dapat memanggil Show instans yang sama untuk membukanya kembali.