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ı DateOfBirth
bir 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
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ü
Settings
WithEvents
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
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
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
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.
.NET Desktop feedback