Freigeben über


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 DateOfBirthdurchgefü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

  1. 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üsselworts WithEvents 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