Cara: Memvalidasi Pengaturan Aplikasi
Topik ini menunjukkan cara memvalidasi pengaturan aplikasi sebelum disimpan.
Karena pengaturan aplikasi sangat diketik, Anda memiliki keyakinan bahwa pengguna tidak dapat menetapkan data dengan jenis yang salah ke pengaturan tertentu. Namun, pengguna masih dapat mencoba menetapkan nilai ke pengaturan yang berada di luar batas yang dapat diterima—misalnya, memasok tanggal lahir yang terjadi di masa mendatang. ApplicationSettingsBase, kelas induk dari semua kelas pengaturan aplikasi, mengekspos empat peristiwa untuk mengaktifkan pemeriksaan batas tersebut. Menangani peristiwa ini menempatkan semua kode validasi Anda di satu lokasi, daripada menyebarkannya di seluruh proyek Anda.
Peristiwa yang Anda gunakan bergantung pada kapan Anda perlu memvalidasi pengaturan Anda, seperti yang dijelaskan dalam tabel berikut.
Event | Kemunculan dan penggunaan |
---|---|
SettingsLoaded | Terjadi setelah pemuatan awal grup properti pengaturan. Gunakan kejadian ini untuk memvalidasi nilai awal untuk seluruh grup properti sebelum digunakan dalam aplikasi. |
SettingChanging | Terjadi sebelum nilai properti pengaturan tunggal diubah. Gunakan kejadian ini untuk memvalidasi satu properti sebelum diubah. Ini dapat memberikan umpan balik segera kepada pengguna mengenai tindakan dan pilihan mereka. |
PropertyChanged | Terjadi setelah nilai properti pengaturan tunggal diubah. Gunakan kejadian ini untuk memvalidasi satu properti setelah diubah. Kejadian ini jarang digunakan untuk validasi kecuali diperlukan proses validasi yang panjang dan asinkron. |
SettingsSaving | Terjadi sebelum grup properti pengaturan disimpan. Gunakan kejadian ini untuk memvalidasi nilai untuk seluruh grup properti sebelum disimpan ke disk. |
Biasanya, Anda tidak akan menggunakan semua peristiwa ini dalam aplikasi yang sama untuk tujuan validasi. Misalnya, sering dimungkinkan untuk memenuhi semua persyaratan validasi dengan hanya SettingChanging menangani peristiwa.
Penanganan aktivitas umumnya melakukan salah satu tindakan berikut saat mendeteksi nilai yang tidak valid:
Secara otomatis menyediakan nilai yang diketahui benar, seperti nilai default.
Mengkueri ulang pengguna kode server untuk informasi.
Untuk peristiwa yang dimunculkan sebelum tindakan terkait, seperti SettingChanging dan SettingsSaving, menggunakan CancelEventArgs argumen untuk membatalkan operasi.
Untuk informasi selengkapnya tentang penanganan peristiwa, lihat Gambaran Umum Penanganan Aktivitas.
Prosedur berikut menunjukkan cara menguji tanggal lahir yang valid menggunakan SettingChanging atau SettingsSaving acara. Prosedur ditulis dengan asumsi bahwa Anda telah membuat pengaturan aplikasi Anda; dalam contoh ini, kita akan melakukan pemeriksaan batas pada pengaturan bernama DateOfBirth
. Untuk informasi selengkapnya tentang membuat pengaturan, lihat Cara: Membuat Aplikasi Pengaturan.
Untuk mendapatkan objek pengaturan aplikasi
Dapatkan referensi ke objek pengaturan aplikasi (instans pembungkus) dengan menyelesaikan salah satu item berpoin berikut:
Jika Anda membuat pengaturan menggunakan kotak dialog Aplikasi Visual Studio Pengaturan di Editor Properti, Anda dapat mengambil objek pengaturan default yang dihasilkan untuk bahasa Anda melalui ekspresi berikut.
Properties.Settings.Default
MySettings.Default
-atau-
Jika Anda adalah pengembang Visual Basic dan membuat pengaturan aplikasi menggunakan Perancang Proyek, Anda dapat mengambil pengaturan dengan menggunakan My.Pengaturan Objek.
-atau-
Jika Anda membuat pengaturan dengan turunan dari ApplicationSettingsBase secara langsung, Anda perlu membuat instans kelas Anda secara manual.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
Prosedur berikut ditulis dengan asumsi bahwa objek pengaturan aplikasi diperoleh dengan menyelesaikan item berpoin terakhir dalam prosedur ini.
Untuk memvalidasi Pengaturan Aplikasi saat pengaturan berubah
Jika Anda adalah pengembang C#, dalam peristiwa formulir atau kontrol
Load
Anda, tambahkan penanganan aktivitas untuk peristiwa tersebut SettingChanging .-atau-
Jika Anda adalah pengembang Visual Basic, Anda harus mendeklarasikan
Settings
variabel menggunakanWithEvents
kata kunci.public void Form1_Load(Object sender, EventArgs e) { settings.SettingChanging += new SettingChangingEventHandler(MyCustomSettings_SettingChanging); }
Public Sub Form1_Load(sender as Object, e as EventArgs) AddHandler settings.SettingChanging, AddressOf MyCustomSettings_SettingChanging End Sub
Tentukan penanganan aktivitas, dan tulis kode di dalamnya untuk melakukan pemeriksaan batas pada tanggal lahir.
private void MyCustomSettings_SettingChanging(Object sender, SettingChangingEventArgs e) { if (e.SettingName.Equals("DateOfBirth")) { var newDate = (DateTime)e.NewValue; if (newDate > DateTime.Now) { e.Cancel = true; // Inform the user. } } }
Private Sub MyCustomSettings_SettingChanging(sender as Object, e as SettingChangingEventArgs) Handles Settings.SettingChanging If (e.SettingName.Equals("DateOfBirth")) Then Dim NewDate as Date = CType(e.NewValue, Date) If (NewDate > Date.Now) Then e.Cancel = True ' Inform the user. End If End If End Sub
Untuk memvalidasi Pengaturan Aplikasi saat Penyimpanan terjadi
Dalam peristiwa formulir atau kontrol
Load
Anda, tambahkan penanganan aktivitas untuk peristiwa tersebut SettingsSaving .public void Form1_Load(Object sender, EventArgs e) { settings.SettingsSaving += new SettingsSavingEventHandler(MyCustomSettings_SettingsSaving); }
Public Sub Form1_Load(Sender as Object, e as EventArgs) AddHandler settings.SettingsSaving, AddressOf MyCustomSettings_SettingsSaving End Sub
Tentukan penanganan aktivitas, dan tulis kode di dalamnya untuk melakukan pemeriksaan batas pada tanggal lahir.
private void MyCustomSettings_SettingsSaving(Object sender, SettingsSavingEventArgs e) { if (this["DateOfBirth"] > Date.Now) { e.Cancel = true; } }
Private Sub MyCustomSettings_SettingsSaving(Sender as Object, e as SettingsSavingEventArgs) If (Me["DateOfBirth"] > Date.Now) Then e.Cancel = True End If End Sub
Baca juga
.NET Desktop feedback