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

Bu konuda, uygulama ayarlarının kalıcı olmadan önce nasıl doğrulanacağı gösterilmektedir.

Uygulama ayarları kesin olarak yazıldığından, kullanıcıların yanlış türde verileri belirli bir ayara atayamadığı bazı güvenlerdir. Bununla birlikte, bir Kullanıcı, kabul edilebilir sınırların dışında kalan bir ayara bir değer atamayı deneyebilir (örneğin, gelecekte oluşan bir Doğum tarihi sağlama). ApplicationSettingsBaseTüm uygulama ayarları sınıflarının üst sınıfı, bu tür sınırlar denetimini etkinleştirmek için dört olay sunar. Bu olayları işlemek, tüm doğrulama kodunuzu projeniz genelinde saçmak yerine tek bir konuma koyar.

Kullandığınız olay, aşağıdaki tabloda açıklandığı gibi ayarlarınızı doğrulamanız gerektiğinde değişir.

Olay Oluşum ve kullanım
SettingsLoaded Bir ayarlar özellik grubunun ilk yüklemesiyle sonra oluşur.

Uygulama içinde kullanılmadan önce tüm özellik grubunun başlangıç değerlerini doğrulamak için bu olayı kullanın.
SettingChanging Tek bir Settings özelliğinin değeri değiştirilmeden önce oluşur.

Değiştirilmeden önce tek bir özelliği doğrulamak için bu olayı kullanın. Bu, kullanıcılara eylemlerle ve seçimleriyle ilgili anında geri bildirim sağlayabilir.
PropertyChanged Tek bir Settings ö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, daha uzun bir zaman uyumsuz doğrulama işlemi gerekli olmadığı sürece doğrulama için nadiren kullanılır.
SettingsSaving Ayarlar özellik grubu depolanmadan önce oluşur.

Tüm özellik grubu değerlerini diske kalıcı yapmadan önce doğrulamak için bu olayı kullanın.

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

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

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

  • Bilgi için sunucu kodu kullanıcısını yeniden sorgular.

  • Ve gibi ilişkili eylemlerinden önce oluşturulan olaylar için, SettingChanging SettingsSaving CancelEventArgs işlemi iptal etmek için bağımsız değişkenini kullanır.

Olay işleme hakkında daha fazla bilgi için bkz. olay Işleyicilerine genel bakış.

Aşağıdaki yordamlarda, ya da olayını kullanarak geçerli bir Doğum tarihinin nasıl test yapılacağı gösterilmektedir SettingChanging SettingsSaving . Yordamlar, uygulama ayarlarınızı zaten oluşturmuş olduğunuz varsayımına göre yazılmıştır; Bu örnekte, adlı bir ayar üzerinde sınır denetimi gerçekleştireceğiz DateOfBirth . ayarları oluşturma hakkında daha fazla bilgi için bkz. nasıl yapılır: uygulama oluşturma Ayarlar.

Uygulama Ayarları nesnesini almak için

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

    • ayarlarınızı, özellik düzenleyicisinde Visual Studio uygulama Ayarlar iletişim kutusunu kullanarak oluşturduysanız, aşağıdaki ifade aracılığıyla diliniz için oluşturulan varsayılan ayarlar nesnesini alabilirsiniz.

      Properties.Settings.Default
      
      MySettings.Default
      

      -veya-

    • Visual Basic geliştiricisiyseniz ve Project tasarımcısını kullanarak uygulama ayarlarınızı oluşturduysanız, My. Ayarlar nesnesinikullanarak ayarlarınızı alabilirsiniz.

      -veya-

    • Ayarlarınızı doğrudan türeterek oluşturduysanız ApplicationSettingsBase , sınıfınızın el ile örneğini oluşturmanız gerekir.

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

Aşağıdaki yordamlar, bu yordamdaki son madde işaretli öğeyi tamamlayarak uygulama ayarları nesnesinin elde edildiği varsayımına göre yazılmıştır.

bir ayar değiştirilirken uygulama Ayarlar doğrulamak için

  1. Bir C# geliştiricisiyseniz, formunuzda veya denetiminizin Load olayında olay için bir olay işleyicisi ekleyin SettingChanging .

    -veya-

    Visual Basic geliştiriciyseniz, Settings anahtar sözcüğünü kullanarak değişkeni bildirmeniz gerekir 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. Olay işleyicisini tanımlayın ve bu kodun içinde, Doğum tarihinde sınır denetimi yapmak için 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
    

bir kayıt gerçekleştiğinde uygulama Ayarlar doğrulamak için

  1. Formunuzda veya denetiminizin Load olayında, olay için bir olay işleyicisi ekleyin 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. Olay işleyicisini tanımlayın ve bu kodun içinde, Doğum tarihinde sınır denetimi yapmak için 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 bkz.