Aracılığıyla paylaş


Nasıl yapılır: Uygulama Ayarlarını Doğrulama

Bu konu başlığında uygulama ayarlarının kalıcı hale gelmeden önce nasıl doğrulandığı gösterilmektedir.

Uygulama ayarları kesin olarak yazıldığından, kullanıcıların belirli bir ayara yanlış türde veriler atayamayacağına güvenebilirsiniz. Ancak, kullanıcı yine de kabul edilebilir sınırların dışında kalan bir ayara değer atamaya çalışabilir; örneğin, gelecekte gerçekleşecek bir doğum tarihi sağlama. tüm uygulama ayarları sınıflarının üst sınıfı olan ApplicationSettingsBase, bu tür sınır denetimini etkinleştirmek için dört olayı kullanıma sunar. Bu olayları işlemek, tüm doğrulama kodunuzu projenize yaymak yerine tek bir konuma yerleştirir.

Kullandığınız olay, aşağıdaki tabloda açıklandığı gibi ayarlarınızı doğrulamanız gereken zamanlara bağlıdır.

Etkinlik Oluşum ve kullanım
SettingsLoaded Ayar özellik grubunun ilk yüklenmesinden sonra meydana gelir.

Uygulama içinde kullanılmadan önce özellik grubunun tamamı için başlangıç değerlerini doğrulamak için bu olayı kullanın.
SettingChanging Tek bir ayarlar özelliğinin değeri değiştirilmeden önce gerçekleşir.

Tek bir özelliği değiştirilmeden önce doğrulamak için bu olayı kullanın. Kullanıcılara eylemleri ve seçimleri hakkında anında geri bildirim sağlayabilir.
PropertyChanged Tek bir ayarlar özelliğinin değeri değiştirildikten sonra gerçekleşir.

Değiştirildikten sonra tek bir özelliği doğrulamak için bu olayı kullanın. Bu olay, uzun ve zaman uyumsuz bir doğrulama işlemi gerekmediği sürece doğrulama için nadiren kullanılır.
SettingsSaving Ayarlar özellik grubu depolanmadan önce gerçekleşir.

Diskte kalıcı hale gelmeden önce tüm özellik grubunun değerlerini doğrulamak için bu olayı kullanın.

Genellikle, doğrulama amacıyla bu olayların tümünü aynı uygulama içinde kullanmazsınız. Örneğin, genellikle yalnızca SettingChanging olayını işleyerek tüm doğrulama gereksinimlerini karşılamak mümkündür.

Olay işleyicisi genellikle geçersiz bir değer algıladığında aşağıdaki eylemlerden birini gerçekleştirir:

  • Varsayılan değer gibi doğru olduğu bilinen bir değeri otomatik olarak sağlar.

  • Sunucu kodunun kullanıcısını bilgi için yeniden sorgular.

  • İlişkili eylemlerinden önce tetiklenen SettingChanging ve SettingsSavinggibi olaylar için, işlemi iptal etmek amacıyla CancelEventArgs bağımsız değişkeni kullanılır.

Olay işleme hakkında daha fazla bilgi için bkz. Olay İşleyicilerine Genel Bakış.

Aşağıdaki yordamlar, SettingChanging veya SettingsSaving olayını kullanarak geçerli bir doğum tarihini test etme işlemini gösterir. Yordamlar, uygulama ayarlarınızı oluşturduğunuz varsayımı altında yazılmıştır; bu örnekte, DateOfBirthadlı bir ayar üzerinde sınır denetimi gerçekleştireceğiz. Ayarları oluşturma hakkında daha fazla bilgi için bkz. Nasıl yapılır: Uygulama Ayarları Oluşturma.

Uygulama ayarları nesnesini almak için

  • Aşağıdaki madde işaretli öğelerden birini tamamlayarak uygulama ayarları nesnesine (sarmalayıcı örneği) başvuru alın:

    • ayarlarınızı Özellik DüzenleyicisiVisual Studio Uygulama Ayarları iletişim kutusunu kullanarak oluşturduysanız, aşağıdaki ifadeyle diliniz için oluşturulan varsayılan ayarlar nesnesini alabilirsiniz.

      Properties.Settings.Default
      
      MySettings.Default
      

      -veya-

    • Visual Basic geliştiricisiyseniz ve uygulama ayarlarınızı Proje Tasarımcısı'nı kullanarak oluşturduysanız, My.Settings Nesnesikullanarak ayarlarınızı alabilirsiniz.

      -veya-

    • ApplicationSettingsBase'dan doğrudan kalıtım alarak ayarlarınızı oluşturduysanız, sınıfınızı el ile örneklemeniz gerekir.

      MyCustomSettings settings = new MyCustomSettings();
      
      Dim Settings as New MyCustomSettings()
      

Aşağıdaki yordamlar, uygulama ayarları nesnesinin bu işlemin son madde işaretli adımı tamamlanarak alındığı varsayımı altında yazılmıştır.

Bir ayar değişirken Uygulama Ayarlarını doğrulamak için

  1. C# geliştiricisiyseniz formunuzun veya denetiminizin Load olayına SettingChanging olayı için bir olay işleyicisi ekleyin.

    -veya-

    Visual Basic geliştiricisiyseniz Settings anahtar sözcüğünü kullanarak WithEvents değişkenini bildirmeniz gerekir.

    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. Olay işleyicisini tanımlayın ve doğum tarihinde sınır denetimi gerçekleştirmek için içindeki kodu yazın.

    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
    

Kaydetme gerçekleştiğinde Uygulama Ayarlarını doğrulamak için

  1. Formunuzun veya denetiminizin Load olayına SettingsSaving olayı için bir olay işleyicisi ekleyin.

    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. Olay işleyicisini tanımlayın ve doğum tarihinde sınır denetimi gerçekleştirmek için içindeki kodu yazın.

    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
    

Ayrıca bakınız