Condividi tramite


Procedura: Creare impostazioni dell'applicazione

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

Nella procedura seguente viene creata manualmente una classe wrapper che deriva da ApplicationSettingsBase. A questa classe si aggiunge una proprietà accessibile pubblicamente per ogni impostazione dell'applicazione da esporre.

È anche possibile eseguire questa procedura usando codice minimo nella finestra di progettazione di Visual Studio. Vedere anche Procedura: Creare le impostazioni dell'applicazione usando la finestra di progettazione.

Per creare nuove impostazioni dell'applicazione a livello di codice

  1. Aggiungere una nuova classe al progetto e rinominarla. Per questa procedura, chiameremo 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 necessaria e applicare tale proprietà con il ApplicationScopedSettingAttribute o UserScopedSettingAttribute, a seconda dell'ambito dell'impostazione. Per altre informazioni sull'ambito delle impostazioni, vedere Panoramica delle impostazioni dell'applicazione . A questo momento, il codice dovrebbe essere 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 di questa classe wrapper nell'applicazione. In genere sarà un membro privato del modulo 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 Load del 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 al termine del modulo oppure queste 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
    

    Sei riuscito a creare una nuova impostazione dell'applicazione e l'hai associata con successo 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 che hai creato come voci sotto l'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, mantiene le informazioni nei file di configurazione come testo normale. Questo limita la sicurezza alla sicurezza dell'accesso ai file fornita dal sistema operativo per l'utente corrente. Per questo motivo, è necessario prestare attenzione alle informazioni archiviate nei file di configurazione. Ad esempio, un uso comune per le impostazioni dell'applicazione consiste nell'archiviare stringhe di connessione che puntano all'archivio dati dell'applicazione. Tuttavia, a causa di problemi di sicurezza, tali stringhe non devono includere password. Per altre informazioni sulle stringhe di connessione, vedere SpecialSetting.

Vedere anche