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
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.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
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
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
.NET Desktop feedback