Procedura: creare le impostazioni dell'applicazione

Usando il codice gestito, è possibile creare nuove impostazioni dell'applicazione e associarle alle proprietà nel form o nei controlli del form, in modo che queste impostazioni vengano caricate e salvate automaticamente in fase di esecuzione.

Nella routine seguente, viene creata manualmente una classe wrapper che deriva da ApplicationSettingsBase. A questa classe è possibile aggiungere una proprietà accessibile pubblicamente per ogni impostazione dell'applicazione da esporre.

È anche possibile eseguire questa routine usando la quantità minima di codice nella finestra di progettazione di Visual Studio. Vedere anche Procedura: Creare un'applicazione Impostazioni tramite la finestra di progettazione.

Per creare nuove impostazioni dell'applicazione a livello di codice

  1. Aggiungere una nuova classe al progetto e rinominarlo. Per questa procedura, si chiamerà questa classe MyUserSettings. Modificare la definizione della classe in modo che la classe derivi da ApplicationSettingsBase.

  2. Definire una proprietà in questa classe wrapper per ogni impostazione dell'applicazione richiesta e applicare la proprietà con ApplicationScopedSettingAttribute o UserScopedSettingAttribute, in base all'ambito dell'impostazione. Per altre informazioni sull'ambito delle impostazioni, vedere Panoramica di Application Impostazioni. A questo punto, il codice dovrebbe risultare simile al seguente:

    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. Creare un'istanza della classe wrapper nell'applicazione. Generalmente è un membro privato del form principale. Dopo aver definito la classe, è necessario associarla a una proprietà. In questo caso, la proprietà BackColor del form. A tale scopo, è possibile usare il gestore eventi del Load modulo.

    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. Se si fornisce un modo per modificare le impostazioni in fase di esecuzione, sarà necessario salvare le impostazioni correnti dell'utente su disco quando il form viene chiuso altrimenti le modifiche andranno perse.

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

    È stata creata una nuova impostazione dell’applicazione, che è stata associata correttamente alla proprietà specificata.

L'esempio seguente mostra un file di impostazioni dell'applicazione che definisce due impostazioni con ambito applicazione e due impostazioni con ambito utente. È necessario aggiungere i nomi per le impostazioni create come voci nell'elemento <configSections> nella parte superiore del file.

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

Sicurezza di .NET Framework

Il provider di impostazioni predefinito, LocalFileSettingsProvider, memorizza le informazioni nei file di configurazione come testo normale. Questo riduce la protezione dell'accesso ai file fornito dal sistema operativo per l'utente corrente. Per questo motivo, è necessario prestare attenzione alle informazioni archiviate nei file di configurazione. Ad esempio, un utilizzo comune per le impostazioni dell'applicazione consiste nell'archiviare le stringhe di connessione che puntano all'archivio dati dell'applicazione. Tuttavia, per motivi di sicurezza, queste stringhe non devono includere le password. Per altre informazioni sulle stringhe di connessione, vedere SpecialSetting.

Vedi anche