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.

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

  1. 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 menggunakan WithEvents 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
    
  2. 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

  1. 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
    
  2. 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