Share via


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. ApplicationSettingsBase, tüm uygulama ayarları sınıflarının üst sınıfı, 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.

Olay Oluşum ve kullanım
SettingsLoaded Ayarlar özellik grubunun ilk yüklenmesinden sonra gerçekleşir.

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ı işleyerek tüm doğrulama gereksinimlerini yerine getirmek 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.

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

  • ve SettingsSavinggibi SettingChanging ilişkili eylemlerinden önce tetiklenen olaylar için, işlemi iptal etmek için bağımsız değişkenini CancelEventArgs kullanır.

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

Aşağıdaki yordamlar, veya olayını kullanarak SettingChanging geçerli bir doğum tarihini test etme işlemini SettingsSaving gösterir. Yordamlar, uygulama ayarlarınızı oluşturduğunuz varsayımı altında yazılmıştır; bu örnekte, adlı DateOfBirthbir ayarda 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:

    • Özellik Düzenleyicisi'ndeki Visual Studio Application Ayarlar iletişim kutusunu kullanarak ayarlarınızı 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ı Project Tasarım Aracı kullanarak oluşturduysanız, My.Ayarlar kullanarak ayarlarınızı alabilirsiniz Nesne.

      -veya-

    • Ayarlarınızı doğrudan öğesinden ApplicationSettingsBase türeterek 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 yordamdaki son madde işaretli öğe tamamlanarak elde edildiği varsayımı altında yazılmıştır.

Bir ayar değiştiğinde Uygulama Ayarlar doğrulamak için

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

    -veya-

    Visual Basic geliştiricisiyseniz, anahtar sözcüğünü SettingsWithEvents kullanarak değişkeni 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 doğrulamak için

  1. Formunuzun veya denetiminizin Load olayına olay için bir olay işleyicisi SettingsSaving 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 bkz.