Delen via


Hoe toepassingsinstellingen maken

Met beheerde code kunt u nieuwe toepassingsinstellingen maken en deze binden aan eigenschappen op uw formulier of de besturingselementen van het formulier, zodat deze instellingen tijdens runtime automatisch worden geladen en opgeslagen.

In de volgende procedure maakt u handmatig een wrapperklasse die is afgeleid van ApplicationSettingsBase. Voor deze klasse voegt u een openbaar toegankelijke eigenschap toe voor elke toepassingsinstelling die u beschikbaar wilt maken.

U kunt deze procedure ook uitvoeren met minimale code in de Visual Studio-ontwerpfunctie. Zie ook Procedure: Toepassingsinstellingen maken met behulp van de ontwerpfunctie.

Programmatisch nieuwe toepassingsinstellingen maken

  1. Voeg een nieuwe klasse toe aan uw project en wijzig de naam ervan. Voor deze procedure noemen we deze klasse MyUserSettings. Wijzig de klassedefinitie zodat de klasse is afgeleid van ApplicationSettingsBase.

  2. Definieer een eigenschap voor deze wrapper-klasse voor elke toepassingsinstelling die u nodig hebt en pas die eigenschap toe met de ApplicationScopedSettingAttribute of UserScopedSettingAttribute, afhankelijk van het bereik van de instelling. Zie Overzicht van toepassingsinstellingenvoor meer informatie over het bereik van instellingen. Uw code moet er nu als volgt uitzien:

    using System;
    using System.Configuration;
    using System.Drawing;
    
    public class MyUserSettings : ApplicationSettingsBase
    {
        [UserScopedSetting()]
        [DefaultSettingValue("white")]
        public Color BackgroundColor
        {
            get
            {
                return ((Color)this["BackgroundColor"]);
            }
            set
            {
                this["BackgroundColor"] = (Color)value;
            }
        }
    }
    
    Imports System.Configuration
    
    Public Class MyUserSettings
        Inherits ApplicationSettingsBase
        <UserScopedSetting()> _
        <DefaultSettingValue("white")> _
        Public Property BackgroundColor() As Color
            Get
                BackgroundColor = Me("BackgroundColor")
            End Get
    
            Set(ByVal value As Color)
                Me("BackgroundColor") = value
            End Set
        End Property
    End Class
    
  3. Maak een exemplaar van deze wrapper-klasse in uw toepassing. Het is meestal een privélid van het hoofdformulier. Nu u uw klasse hebt gedefinieerd, moet u deze koppelen aan een eigenschap; in dit geval de eigenschap BackColor van uw formulier. U kunt dit doen in de Load eventhandler van uw formulier.

    MyUserSettings mus;
    
    private void Form1_Load(object sender, EventArgs e)
    {
        mus = new MyUserSettings();
        mus.BackgroundColor = Color.AliceBlue;
        this.DataBindings.Add(new Binding("BackColor", mus, "BackgroundColor"));
    }
    
    Dim Mus As MyUserSettings
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Mus = New MyUserSettings()
        Mus.BackgroundColor = Color.AliceBlue
        Me.DataBindings.Add(New Binding("BackColor", Mus, "BackgroundColor"))
    End Sub
    
  4. Als u een manier opgeeft om instellingen tijdens runtime te wijzigen, moet u de huidige instellingen van de gebruiker opslaan op schijf wanneer het formulier wordt gesloten, anders gaan deze wijzigingen verloren.

    //Make sure to hook up this event handler in the constructor!
    //this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
        void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            mus.Save();
        }
    
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Mus.Save()
    End Sub
    

    U hebt nu een nieuwe toepassingsinstelling gemaakt en deze gebonden aan de opgegeven eigenschap.

In het volgende voorbeeld ziet u een toepassingsinstellingenbestand dat twee instellingen voor toepassingsbereik en twee instellingen voor gebruikersbereik definieert. U moet de namen toevoegen voor instellingen die u hebt gemaakt als vermeldingen onder de <configSections> element boven aan het bestand.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </sectionGroup>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <WindowsApplication1.Properties.Settings>
      <setting name="Cursor" serializeAs="String">
        <value>Default</value>
      </setting>
      <setting name="DoubleBuffering" serializeAs="String">
        <value>False</value>
      </setting>
    </WindowsApplication1.Properties.Settings>
  </applicationSettings>
  <userSettings>
    <WindowsApplication1.Properties.Settings>
      <setting name="FormTitle" serializeAs="String">
        <value>Form1</value>
      </setting>
      <setting name="FormSize" serializeAs="String">
        <value>595, 536</value>
      </setting>
    </WindowsApplication1.Properties.Settings>
  </userSettings>
</configuration>

.NET Framework-beveiliging

De standaardinstellingenprovider, LocalFileSettingsProvider, slaat informatie op in configuratiebestanden als platte tekst. Dit beperkt de beveiliging tot de beveiliging van bestandstoegang die wordt geleverd door het besturingssysteem voor de huidige gebruiker. Daarom moet u voorzichtig zijn met de informatie die is opgeslagen in configuratiebestanden. Een veelvoorkomend gebruik voor toepassingsinstellingen is bijvoorbeeld het opslaan van verbindingsreeksen die verwijzen naar het gegevensarchief van de toepassing. Vanwege beveiligingsproblemen mogen dergelijke tekenreeksen echter geen wachtwoorden bevatten. Voor meer informatie over verbindingsreeksen, zie SpecialSetting.

Zie ook