Sdílet prostřednictvím


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ěchto událostí seskupí veškerý ověřovací kód do jednoho umístění, místo aby byl rozmístě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í zpracováním pouze události SettingChanging.

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, jako jsou SettingChanging a SettingsSaving, se k zrušení operace používá argument CancelEventArgs.

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

Následující postupy ukazují, jak otestovat platné datum narození pomocí SettingChanging nebo události SettingsSaving. 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 (instanci obálky) tak, že dokončíte jednu z následujících možností:

    • Pokud jste nastavení vytvořili pomocí dialogového okna Nastavení aplikace sady Visual Studio v editoru vlastností , můžete pomocí následujícího výrazu načíst objekt výchozího 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 projektů, můžete nastavení načíst pomocí objektu My.Settings Object.

      -nebo-

    • Pokud jste nastavení vytvořili přímým odvozením z ApplicationSettingsBase, je nutné ručně vytvořit instanci vaší třídy.

      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 ve formuláři nebo ovládacím prvku v události Load obslužnou rutinu pro událost SettingChanging.

    -nebo-

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

    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
    

K ověření nastavení aplikace při ukládání

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

    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é