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
.NET Desktop feedback