Dela via


Gör så här: Skapa programinställningar

Med hjälp av hanterad kod kan du skapa nya programinställningar och binda dem till egenskaper i formuläret eller formulärets kontroller, så att dessa inställningar läses in och sparas automatiskt vid körning.

I följande procedur skapar du manuellt en omslutningsklass som härleds från ApplicationSettingsBase. I den här klassen lägger du till en offentligt tillgänglig egenskap för varje programinställning som du vill exponera.

Du kan också utföra den här proceduren med minimal kod i Visual Studio-designern. Se även Så här gör du: Skapa programinställningar med designverktyget.

Så här skapar du nya programinställningar programmatiskt

  1. Lägg till en ny klass i projektet och byt namn på den. För den här proceduren anropar vi den här klassen MyUserSettings. Ändra klassdefinitionen så att klassen härleds från ApplicationSettingsBase.

  2. Definiera en egenskap för den här omslutningsklassen för varje programinställning som du behöver och tillämpa den egenskapen med antingen ApplicationScopedSettingAttribute eller UserScopedSettingAttribute, beroende på inställningens omfång. Mer information om omfånget för inställningar finns i Översikt över programinställningar. Vid det här laget bör koden se ut så här:

    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. Skapa en instans av den här omslutningsklassen i ditt program. Det är ofta en privat medlem i huvudformuläret. Nu när du har definierat klassen måste du binda den till en egenskap; i det här fallet, BackColor-egenskapen för ditt formulär. Du kan göra detta i formulärets Load händelsehanterare.

    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. Om du tillhandahåller ett sätt att ändra inställningarna under körning måste du spara användarens aktuella inställningar på disk när formuläret stängs, annars kommer ändringarna att gå förlorade.

    //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
    

    Nu har du skapat en ny programinställning och bundit den till den angivna egenskapen.

I följande exempel visas en programinställningsfil som definierar två inställningar med programomfattning och två inställningar med användaromfattning. Du måste lägga till namnen för inställningar som du har skapat som poster under <konfigurationssektioner> element i början av filen.

<?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 Säkerhet

Standardinställningsprovidern LocalFileSettingsProviderbevarar information till konfigurationsfiler som oformaterad text. Detta begränsar säkerheten för den filåtkomstsäkerhet som tillhandahålls av operativsystemet för den aktuella användaren. Därför måste du vara försiktig med informationen som lagras i konfigurationsfilerna. En vanlig användning för programinställningar är till exempel att lagra anslutningssträngar som pekar på programmets datalager. Men på grund av säkerhetsproblem bör sådana strängar inte innehålla lösenord. Mer information om anslutningssträngar finns i SpecialSetting.

Se även