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
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.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
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
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
- SpecialSettingAttribute
- LocalFileSettingsProvider
- Panoramica delle impostazioni dell'applicazione
- Procedura: Convalidare le impostazioni dell'applicazione
.NET Desktop feedback