Vorgehensweise: Überprüfen von Anwendungseinstellungen
In diesem Thema wird veranschaulicht, wie Anwendungseinstellungen überprüft werden, bevor sie beibehalten werden.
Da Anwendungseinstellungen stark typiert sind, haben Sie ein gewisses Vertrauen, dass Benutzer einer bestimmten Einstellung keine Daten eines falschen Typs zuweisen können. Ein Benutzer kann jedoch trotzdem versuchen, einer Einstellung einen Wert zuzuweisen, der außerhalb zulässiger Grenzen liegt, z. B. das Bereitstellen eines Geburtsdatums, das in der Zukunft eintritt. ApplicationSettingsBase, die übergeordnete Klasse aller Anwendungseinstellungsklassen, macht vier Ereignisse verfügbar, um solche Überprüfungen von Grenzen zu ermöglichen. Durch die Bearbeitung dieser Ereignisse befinden sich alle Überprüfungscodes an einem einzigen Speicherort und sind nicht im gesamten Projekt verteilt.
Das von Ihnen verwendete Ereignis hängt davon ab, wann Sie Ihre Einstellungen überprüfen müssen, wie in der folgenden Tabelle beschrieben.
Ereignis | Vorkommen und Verwendung |
---|---|
SettingsLoaded | Tritt nach dem ersten Laden der Eigenschaftengruppe einer Einstellung auf Verwenden Sie dieses Ereignis, um die Anfangswerte für die gesamte Eigenschaftsgruppe zu überprüfen, bevor sie in der Anwendung verwendet werden. |
SettingChanging | Tritt auf, bevor der Wert einer einzelnen Einstellungseigenschaft geändert wird Verwenden Sie dieses Ereignis, um eine einzelne Eigenschaft zu überprüfen, bevor sie geändert wird. Sie kann Benutzern sofortiges Feedback zu ihren Aktionen und Entscheidungen geben. |
PropertyChanged | Tritt ein, nachdem der Wert einer einzelnen Einstellungseigenschaft geändert wurde. Verwenden Sie dieses Ereignis, um eine einzelne Eigenschaft zu überprüfen, nachdem sie geändert wurde. Dieses Ereignis wird selten für die Überprüfung verwendet, es sei denn, ein langwieriger asynchroner Überprüfungsprozess ist erforderlich. |
SettingsSaving | Tritt auf, bevor die Eigenschaftengruppe der Einstellung gespeichert wird Verwenden Sie dieses Ereignis, um Werte für die gesamte Eigenschaftsgruppe zu überprüfen, bevor sie auf dem Datenträger gespeichert werden. |
In der Regel verwenden Sie nicht alle diese Ereignisse innerhalb derselben Anwendung für Überprüfungszwecke. So ist es z. B. häufig möglich, alle Validierungsanforderungen zu erfüllen, indem nur das SettingChanging Ereignis behandelt wird.
Ein Ereignishandler führt in der Regel eine der folgenden Aktionen aus, wenn ein ungültiger Wert erkannt wird:
Gibt automatisch einen als korrekt bekannten Wert an, z. B. den Standardwert.
Er fragt Benutzende des Servercodes erneut nach Informationen.
Für Ereignisse, die noch vor der zugewiesenen Aktion ausgelöst wurden (z. B. SettingChanging und SettingsSaving), wird das CancelEventArgs-Argument verwendet, um den Vorgang abzubrechen.
Weitere Informationen zur Behandlung von Ereignissen finden Sie unter Übersicht über Ereignishandler.
Die folgenden Vorgänge zeigen, wie Sie entweder mithilfe des Ereignisses SettingChanging oder SettingsSaving ein gültiges Geburtsdatum überprüfen. Die Verfahren wurden unter der Annahme geschrieben, dass Sie ihre Anwendungseinstellungen bereits erstellt haben; in diesem Beispiel wird die Begrenzungsüberprüfung für eine Einstellung mit dem Namen DateOfBirth
durchgeführt. Weitere Informationen zum Erstellen von Einstellungen finden Sie unter How to: Create Application Settings.
So rufen Sie das Anwendungseinstellungsobjekt ab
Rufen Sie einen Verweis auf das Anwendungseinstellungsobjekt (die Wrapperinstanz) ab, indem Sie eines der folgenden gegliederten Elemente abschließen:
Wenn Sie die Einstellungen über das Dialogfeld „Anwendungseinstellungen von Visual Studio“ im -Eigenschaften-Editor erstellt haben, können Sie das Standardeinstellungsobjekt abrufen, das über den folgenden Ausdruck für Ihre Sprache generiert wurde.
Properties.Settings.Default
MySettings.Default
–oder–
Wenn Sie ein Visual Basic-Entwickler sind und Ihre Anwendungseinstellungen mithilfe von Project Designer erstellt haben, können Sie Ihre Einstellungen mithilfe des My.Settings-Objektsabrufen.
–oder–
Wenn Sie Ihre Einstellungen durch direkte Ableitung von ApplicationSettingsBase generiert haben, müssen Sie Ihre klasse manuell instanziieren.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
Die folgenden Prozeduren wurden unter der Annahme geschrieben, dass das Anwendungseinstellungsobjekt abgerufen wurde, indem das letzte gegliederte Element in dieser Prozedur abgeschlossen wurde.
So überprüfen Sie Anwendungseinstellungen, wenn eine Einstellung geändert wird
Wenn Sie ein C#-Entwickler sind, fügen Sie im
Load
-Ereignis Ihres Formulars oder Steuerelements einen Ereignishandler für das SettingChanging-Ereignis hinzu.–oder–
Wenn Sie ein Visual Basic-Entwickler sind, sollten Sie die
Settings
Variable mithilfe des schlüsselwortsWithEvents
deklarieren.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
Definieren Sie den Ereignishandler, und schreiben Sie den Code in den Ereignishandler, um eine Überprüfung der Begrenzungen für das Geburtsdatum durchzuführen.
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
So überprüfen Sie Anwendungseinstellungen, sobald ein Speichervorgang auftritt
Fügen Sie in Ihrem Formular oder dem
Load
-Ereignis des Steuerelements einen Ereignishandler für das SettingsSaving-Ereignis hinzu.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
Definieren Sie den Ereignishandler, und schreiben Sie den Code in den Ereignishandler, um eine Überprüfung der Begrenzungen für das Geburtsdatum durchzuführen.
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
Weitere Informationen
.NET Desktop feedback