Vorgehensweise: Überprüfen von Anwendungseinstellungen

In diesem Thema wird veranschaulicht, wie Anwendungseinstellungen überprüft werden, bevor sie persistent gespeichert werden.

Da die Anwendungseinstellungen stark typisiert sind, müssen Sie darauf vertrauen, dass Benutzer Daten mit einem falschen Typ keiner bestimmten Einstellung zuweisen können. Ein Benutzer kann weiterhin versuchen, einer Einstellung einen Wert zuzuweisen, der außerhalb der zulässigen Grenzen liegt, z.B. die Angabe eines in der Zukunft liegenden Geburtsdatums. 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.

Welches Ereignis Sie verwenden, hängt davon ob, 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 der gesamten Eigenschaftengruppe 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 unmittelbares Feedback hinsichtlich ihrer Aktionen und Auswahl geben.
PropertyChanged Tritt auf, 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 zur Überprüfung verwendet, es sei denn, es ist ein langer, asynchroner Überprüfungsprozess erforderlich.
SettingsSaving Tritt auf, bevor die Eingenschaftengruppe der Einstellung gespeichert wird.

Verwenden Sie dieses Ereignis, um Werte der gesamten Eigenschaftengruppe zu überprüfen, bevor sie persistent auf dem Datenträger gespeichert werden.

Normalerweise verwenden Sie zu Überprüfungszwecken nicht alle diese Ereignisse innerhalb der gleichen Anwendung. Es ist oft der Fall, dass alle Überprüfungsanforderungen erfüllt werden können, indem nur das SettingChanging-Ereignis bearbeitet wird.

Ein Ereignishandler führt in der Regel eine der folgenden Aktionen aus, wenn ein ungültiger Wert erkannt wurde:

  • Er gibt automatisch einen Wert an, der bekanntermaßen richtig ist, z.B. der Standardwert.

  • Er fragt den Benutzer 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 Verfahren zeigen, wie Sie mit dem SettingChanging oder SettingsSaving-Ereignis auf ein gültiges Geburtsdatum prüfen können. Die Verfahren wurden unter der Annahme geschrieben, dass Sie Ihre Anwendungseinstellungen bereits erstellt haben. In diesem Beispiel wird für die Einstellung mit dem Namen DateOfBirth eine Überprüfung der Begrenzungen durchgeführt. Weitere Informationen zum Erstellen von Einstellungen finden Sie unter Vorgehensweise: Erstellen von Anwendungseinstellungen.

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 Entwickler von Visual Basic sind und Sie Ihre Anwendungseinstellungen mit dem Projekt-Designer erstellt haben, können Sie Ihre Einstellungen über das My.Settings-Objekt abrufen.

      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

  1. Wenn Sie Entwickler*in in C# sind, fügen Sie in Ihrem Formular oder dem Load-Ereignis des Steuerelements einen Ereignishandler für das SettingChanging-Ereignis hinzu.

    Oder

    Wenn Sie Visual Basic-Entwickler sind, sollten Sie die Settings-Variablen mithilfe des WithEvents-Schlüsselworts 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
    
  2. 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

  1. 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
    
  2. 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