Delen via


Hoe: Toepassingsinstellingen valideren

In dit onderwerp wordt gedemonstreerd hoe u toepassingsinstellingen valideert voordat deze worden bewaard.

Omdat toepassingsinstellingen sterk zijn getypt, weet u zeker dat gebruikers geen gegevens van een onjuist type kunnen toewijzen aan een bepaalde instelling. Een gebruiker kan echter nog steeds proberen een waarde toe te wijzen aan een instelling die buiten aanvaardbare grenzen valt, bijvoorbeeld door een geboortedatum op te geven die in de toekomst plaatsvindt. ApplicationSettingsBase, de bovenliggende klasse van alle klassen toepassingsinstellingen, maakt vier gebeurtenissen beschikbaar om dergelijke grenzen te controleren. Als u deze gebeurtenissen verwerkt, wordt al uw validatiecode op één locatie geplaatst, in plaats van deze over het hele project te verspreiden.

De gebeurtenis die u gebruikt, is afhankelijk van wanneer u uw instellingen moet valideren, zoals beschreven in de volgende tabel.

Gebeurtenis Voorkomen en gebruik
SettingsLoaded Vindt plaats na het initiële laden van een groep van instellingen-eigenschappen.

Gebruik deze gebeurtenis om de initiële waarden voor de hele eigenschapsgroep te valideren voordat deze in de toepassing worden gebruikt.
SettingChanging Vindt plaats voordat de waarde van één instellingseigenschap wordt gewijzigd.

Gebruik deze gebeurtenis om één eigenschap te valideren voordat deze wordt gewijzigd. Het kan gebruikers onmiddellijk feedback geven over hun acties en keuzes.
PropertyChanged Vindt plaats nadat de waarde van één instellingseigenschap is gewijzigd.

Gebruik deze gebeurtenis om één eigenschap te valideren nadat deze is gewijzigd. Deze gebeurtenis wordt zelden gebruikt voor validatie, tenzij een langdurig asynchroon validatieproces is vereist.
SettingsSaving Vindt plaats voordat de groep instellingeneigenschappen wordt opgeslagen.

Gebruik deze gebeurtenis om waarden voor de hele eigenschapsgroep te valideren voordat deze op schijf worden bewaard.

Normaal gesproken gebruikt u niet al deze gebeurtenissen binnen dezelfde toepassing voor validatiedoeleinden. Het is bijvoorbeeld vaak mogelijk om aan alle validatievereisten te voldoen door alleen de SettingChanging gebeurtenis te verwerken.

Een gebeurtenishandler voert doorgaans een van de volgende acties uit wanneer een ongeldige waarde wordt gedetecteerd:

  • Levert automatisch een waarde die juist is, zoals de standaardwaarde.

  • Hiermee wordt de gebruiker van servercode opnieuw opgevraagd voor informatie.

  • Voor gebeurtenissen die worden gegenereerd vóór de bijbehorende acties, zoals SettingChanging en SettingsSaving, gebruikt u het argument CancelEventArgs om de bewerking te annuleren.

Voor meer informatie over gebeurtenisafhandeling, zie Overzicht van gebeurtenis-handlers.

De volgende procedures laten zien hoe u kunt testen op een geldige geboortedatum met behulp van de SettingChanging of de SettingsSaving gebeurtenis. De procedures zijn geschreven onder de veronderstelling dat u uw toepassingsinstellingen al hebt gemaakt; in dit voorbeeld zullen we een controle uitvoeren op een instelling met de naam DateOfBirth. Zie Toepassingsinstellingen makenvoor meer informatie over het maken van instellingen.

Het toepassingsinstellingenobject ophalen

  • Haal een verwijzing op naar het object met toepassingsinstellingen (het wrapper-exemplaar) door een van de volgende punten uit te voeren:

    • Als u uw instellingen hebt gemaakt met behulp van het dialoogvenster Toepassingsinstellingen van Visual Studio in de Eigenschappeneditor, kunt u het standaardinstellingenobject ophalen dat voor uw taal is gegenereerd via de volgende expressie.

      Properties.Settings.Default
      
      MySettings.Default
      

      -of-

    • Als u een Visual Basic-ontwikkelaar bent en u uw toepassingsinstellingen hebt gemaakt met projectontwerper, kunt u uw instellingen ophalen met behulp van het My.Settings Object.

      -of-

    • Als u uw instellingen hebt gemaakt door rechtstreeks van ApplicationSettingsBase af te leiden, moet u uw klas handmatig instantiëren.

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

De volgende procedures zijn geschreven met de aanname dat het toepassingsinstellingenobject is verkregen door het laatste punt van de opsomming in deze procedure te voltooien.

Toepassingsinstellingen valideren wanneer een instelling wordt gewijzigd

  1. Als u een C#-ontwikkelaar bent, voegt u in het formulier of besturingselement Load gebeurtenis een gebeurtenis-handler toe voor de SettingChanging gebeurtenis.

    -of-

    Als u een Visual Basic-ontwikkelaar bent, moet u de Settings variabele declareren met behulp van het trefwoord 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. Definieer de gebeurtenis-handler en schrijf de code erin om grenzen te controleren op de geboortedatum.

    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
    

Toepassingsinstellingen valideren wanneer opslaan plaatsvindt

  1. Voeg in de Load gebeurtenis van het formulier of besturingselement een gebeurtenishandler toe voor de SettingsSaving gebeurtenis.

    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. Definieer de gebeurtenis-handler en schrijf de code erin om grenzen te controleren op de geboortedatum.

    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
    

Zie ook