Bagikan melalui


Window.Closing Kejadian

Definisi

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.

Berlaku untuk

Lihat juga