Bagikan melalui


Cara menutup jendela atau kotak dialog (WPF .NET)

Dalam artikel ini, Anda akan mempelajari berbagai cara untuk menutup jendela atau kotak dialog. Pengguna dapat menutup jendela dengan menggunakan elemen di area non-klien, termasuk yang berikut ini:

  • Item Tutup dari menu Sistem.
  • Menekan ALT + F4.
  • Menekan tombol Tutup.
  • Menekan ESC ketika tombol memiliki properti IsCancel yang diatur ke true pada jendela modal.

Saat merancang jendela, berikan lebih banyak mekanisme ke area klien untuk menutup jendela. Beberapa elemen desain umum pada jendela yang digunakan untuk menutupnya meliputi yang berikut ini:

  • Item Keluar dalam menu File, biasanya untuk jendela aplikasi utama.
  • Item Tutup dalam menu File, biasanya untuk jendela aplikasi sekunder.
  • Tombol Batal, biasanya untuk kotak dialog modal.
  • Tombol Tutup, biasanya untuk kotak dialog tanpa mode.

Penting

Setelah jendela ditutup, instans objek yang sama tidak dapat digunakan untuk membuka kembali jendela.

Untuk informasi selengkapnya tentang masa pakai jendela, lihat Gambaran Umum jendela WPF: Masa pakai jendela.

Menutup jendela modal

Saat menutup jendela yang dibuka dengan ShowDialog metode , atur DialogResult properti ke salah satu true atau false untuk menunjukkan status "diterima" atau "dibatalkan", masing-masing. Segera setelah DialogResult properti diatur ke nilai, jendela ditutup. Kode berikut menunjukkan pengaturan DialogResult properti:

private void okButton_Click(object sender, RoutedEventArgs e) =>
    DialogResult = true;

private void cancelButton_Click(object sender, RoutedEventArgs e) =>
    DialogResult = false;
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
    DialogResult = True
End Sub

Private Sub cancelButton_Click(sender As Object, e As RoutedEventArgs)
    DialogResult = False
End Sub

Anda juga dapat memanggil metode .Close Close Jika metode digunakan, DialogResult properti diatur ke false.

Setelah jendela ditutup, jendela tidak dapat dibuka kembali dengan instans objek yang sama. Jika Anda mencoba menampilkan jendela yang sama, akan InvalidOperationException dilemparkan. Sebagai gantinya, buat instans baru jendela dan buka.

Menutup jendela tanpa mode

Saat menutup jendela yang dibuka dengan Show metode , gunakan Close metode . Kode berikut menunjukkan penutupan jendela tanpa mode:

private void closeButton_Click(object sender, RoutedEventArgs e) =>
    Close();
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs)
    Close()
End Sub

Tutup dengan IsCancel

Properti Button.IsCancel dapat diatur ke true untuk mengaktifkan kunci ESC untuk menutup jendela secara otomatis. Ini hanya berfungsi ketika jendela dibuka dengan ShowDialog metode .

<Button Name="cancelButton" IsCancel="True">Cancel</Button>

Sembunyikan jendela

Alih-alih menutup jendela, jendela dapat disembunyikan dengan Hide metode . Jendela tersembunyi dapat dibuka kembali, tidak seperti jendela yang telah ditutup. Jika Anda akan menggunakan kembali instans objek jendela, sembunyikan jendela alih-alih menutupnya. Kode berikut menunjukkan menyembunyikan jendela:

private void saveButton_Click(object sender, RoutedEventArgs e) =>
    Hide();
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs)
    Hide()
End Sub

Batal tutup dan sembunyikan

Jika Anda telah merancang tombol untuk menyembunyikan jendela alih-alih menutupnya, pengguna masih dapat melewati ini dan menutup jendela. Item Tutup menu sistem dan tombol Tutup area non-klien jendela, akan menutup jendela alih-alih menyembunyikannya. Pertimbangkan skenario ini ketika niat Anda adalah menyembunyikan jendela alih-alih menutupnya.

Perhatian

Jika jendela ditampilkan secara modal dengan ShowDialog, DialogResult properti akan diatur ke null saat jendela disembunyikan. Anda harus mengomunikasikan status kembali ke kode panggilan dengan menambahkan properti Anda sendiri ke jendela.

Saat jendela ditutup, Closing peristiwa akan dinaikkan. Handler diteruskan , CancelEventArgsyang mengimplementasikan Cancel properti . Atur properti tersebut ke true untuk mencegah jendela ditutup. Kode berikut menunjukkan cara membatalkan penutupan dan sebagai gantinya menyembunyikan jendela:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    // Cancel the closure
    e.Cancel = true;

    // Hide the window
    Hide();
}
Private Sub Window_Closing(sender As Object, e As ComponentModel.CancelEventArgs)
    ' Cancel the closure
    e.Cancel = True

    ' Hide the window
    Hide()
End Sub

Mungkin ada kalanya Anda tidak ingin menyembunyikan jendela, tetapi sebenarnya mencegah pengguna menutupnya. Untuk informasi selengkapnya, lihat Gambaran Umum jendela WPF: Membatalkan penutupan jendela.

Baca juga