Postupy: Ověření nastavení aplikace

Toto téma ukazuje, jak ověřit nastavení aplikace před jejich zachováním.

Vzhledem k tomu, že nastavení aplikace je silného typu, máte jistotu, že uživatelé nemůžou k danému nastavení přiřadit data nesprávného typu. Uživatel se ale může pokusit přiřadit hodnotu nastavení, které spadá mimo přijatelné hranice – například zadat datum narození, ke kterému dojde v budoucnu. ApplicationSettingsBase, nadřazená třída všech tříd nastavení aplikace, zveřejňuje čtyři události pro povolení takové kontroly hranic. Zpracovánítěchtoch událostí umístí veškerý ověřovací kód do jednoho umístění místo jeho bodování v celém projektu.

Událost, kterou používáte, závisí na tom, kdy potřebujete ověřit nastavení, jak je popsáno v následující tabulce.

Událost Výskyt a použití
SettingsLoaded Nastane po počátečním načtení skupiny vlastností nastavení.

Tato událost slouží k ověření počátečních hodnot pro celou skupinu vlastností předtím, než se použijí v rámci aplikace.
SettingChanging Nastane před změnou hodnoty jedné vlastnosti nastavení.

Tato událost slouží k ověření jedné vlastnosti před změnou. Může uživatelům poskytnout okamžitou zpětnou vazbu týkající se jejich akcí a voleb.
PropertyChanged Nastane po změně hodnoty jedné vlastnosti nastavení.

Tato událost slouží k ověření jedné vlastnosti po změně. Tato událost se zřídka používá k ověření, pokud není vyžadován zdlouhavý asynchronní proces ověření.
SettingsSaving Nastane před uložením skupiny vlastností nastavení.

Tato událost slouží k ověření hodnot pro celou skupinu vlastností předtím, než se zachovají na disk.

Obvykle nebudete pro účely ověřování používat všechny tyto události ve stejné aplikaci. Často je například možné splnit všechny požadavky na ověření tím, že se zachází pouze s SettingChanging událostí.

Obslužná rutina události obecně provádí jednu z následujících akcí, když zjistí neplatnou hodnotu:

  • Automaticky poskytuje hodnotu, o které je známo, že je správná, například výchozí hodnota.

  • Znovu se dotazuje uživatele kódu serveru na informace.

  • U událostí vyvolaných před přidruženými akcemi, například SettingChanging a SettingsSaving, používá CancelEventArgs argument k zrušení operace.

Další informace o zpracování událostí naleznete v tématu Přehled obslužných rutin událostí.

Následující postupy ukazují, jak otestovat platné datum narození pomocí SettingChanging události nebo SettingsSaving události. Postupy byly napsány za předpokladu, že jste již vytvořili nastavení aplikace; v tomto příkladu provedeme kontrolu hranic u nastavení s názvem DateOfBirth. Další informace o vytváření nastavení naleznete v tématu Postupy: Vytvoření Nastavení aplikace.

Získání objektu nastavení aplikace

  • Získejte odkaz na objekt nastavení aplikace (instance obálky) dokončením jedné z následujících položek s odrážkami:

    • Pokud jste nastavení vytvořili pomocí dialogového okna Visual Studio Application Nastavení v Editoru vlastností, můžete pomocí následujícího výrazu načíst výchozí objekt nastavení vygenerovaný pro váš jazyk.

      Properties.Settings.Default
      
      MySettings.Default
      

      nebo

    • Pokud jste vývojář jazyka Visual Basic a vytvořili jste nastavení aplikace pomocí Návrháře projektu, můžete nastavení načíst pomocí my.Nastavení Objekt.

      nebo

    • Pokud jste nastavení vytvořili odvozením přímo, ApplicationSettingsBase musíte třídu vytvořit ručně.

      MyCustomSettings settings = new MyCustomSettings();
      
      Dim Settings as New MyCustomSettings()
      

Následující postupy byly napsány za předpokladu, že objekt nastavení aplikace byl získán dokončením poslední položky s odrážkami v tomto postupu.

Ověření Nastavení aplikace při změně nastavení

  1. Pokud jste vývojář jazyka C#, přidejte v události formuláře nebo ovládacího prvku Load obslužnou rutinu SettingChanging události.

    nebo

    Pokud jste vývojář jazyka Visual Basic, měli byste proměnnou Settings deklarovat pomocí klíčového WithEvents slova.

    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. Definujte obslužnou rutinu události a napište kód uvnitř, který provede kontrolu hranic pro datum narození.

    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
    

Ověření Nastavení aplikace při uložení

  1. V události formuláře nebo ovládacího prvku Load přidejte obslužnou rutinu SettingsSaving události události.

    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. Definujte obslužnou rutinu události a napište kód uvnitř, který provede kontrolu hranic pro datum narození.

    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
    

Viz také