Bagikan melalui


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.

Peristiwa 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 properti tunggal pada pengaturan diubah nilainya.

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 peristiwa ini untuk memvalidasi satu properti setelah properti tersebut 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 menangani peristiwa SettingChanging.

Penanganan aktivitas umumnya melakukan salah satu tindakan berikut saat mendeteksi nilai yang tidak valid:

  • Secara otomatis menyediakan nilai yang diketahui benar, seperti nilai default.

  • Meminta ulang informasi dari pengguna server.

  • Untuk peristiwa yang dimunculkan sebelum tindakan terkait, seperti SettingChanging dan SettingsSaving, gunakan argumen CancelEventArgs 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 peristiwa SettingsSaving. 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 Pengaturan Aplikasi.

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 Pengaturan Aplikasi Visual Studio di Editor Properti, Anda dapat mengambil objek pengaturan default yang dihasilkan untuk bahasa Anda dengan 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 anda dengan menggunakan Objek My.Settings.

      -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

  1. Jika Anda adalah pengembang C#, dalam peristiwa Load dari formulir atau kontrol Anda, tambahkan penangan kejadian untuk peristiwa SettingChanging.

    -atau-

    Jika Anda adalah pengembang Visual Basic, Anda harus mendeklarasikan variabel Settings menggunakan kata kunci WithEvents.

    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
    
  2. Tentukan penanganan peristiwa, dan tulis kode di dalamnya untuk melakukan pemeriksaan batasan 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

  1. Dalam peristiwa Load pada formulir atau kontrol Anda, tambahkan penangan kejadian untuk peristiwa 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
    
  2. Tentukan penanganan peristiwa, dan tulis kode di dalamnya untuk melakukan pemeriksaan batasan 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
    

Lihat juga