Vorgehensweise: Erstellen von Anwendungseinstellungen
Mithilfe von verwaltetem Code können Sie neue Anwendungseinstellungen erstellen und an Eigenschaften in Ihrem Formular oder den Steuerelementen Des Formulars binden, sodass diese Einstellungen zur Laufzeit automatisch geladen und gespeichert werden.
Im folgenden Verfahren erstellen Sie manuell eine Wrapperklasse, die von ApplicationSettingsBaseabgeleitet wird. Zu dieser Klasse fügen Sie eine öffentlich zugängliche Eigenschaft für jede Anwendungseinstellung hinzu, die Sie verfügbar machen möchten.
Sie können dieses Verfahren auch mit minimalem Code im Visual Studio-Designer ausführen. Weitere Informationen finden Sie außerdem unter Erstellen von Anwendungseinstellungen mithilfe des Designers.
So erstellen Sie programmgesteuert neue Anwendungseinstellungen
Fügen Sie Ihrem Projekt eine neue Klasse hinzu, und benennen Sie sie um. Für dieses Verfahren werden wir diese Klasse
MyUserSettings
nennen. Ändern Sie die Klassendefinition so, dass die Klasse von ApplicationSettingsBaseabgeleitet wird.Definieren Sie eine Eigenschaft für diese Wrapperklasse für jede benötigte Anwendungseinstellung, und wenden Sie diese Eigenschaft mit ApplicationScopedSettingAttribute oder mit UserScopedSettingAttribute, abhängig vom Bereich der Einstellung an. Weitere Informationen zum Einstellungsbereich finden Sie unter Übersicht über Anwendungseinstellungen. Der Code sollte nun wie folgt aussehen:
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
Erstellen Sie eine Instanz dieser Wrapperklasse in Ihrer Anwendung. Es wird in der Regel ein privates Element des Hauptformulars sein. Nachdem Sie Ihre Klasse definiert haben, müssen Sie sie an eine Eigenschaft binden; in diesem Fall die BackColor-Eigenschaft Ihres Formulars. Sie können dies im
Load
-Ereignishandler des Formulars erreichen.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
Wenn Sie eine Möglichkeit zum Ändern von Einstellungen zur Laufzeit bereitstellen, müssen Sie die aktuellen Einstellungen des Benutzers beim Schließen des Formulars auf dem Datenträger speichern, sonst gehen diese Änderungen verloren.
//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
Sie haben nun erfolgreich eine neue Anwendungseinstellung erstellt und an die angegebene Eigenschaft gebunden.
Das folgende Beispiel zeigt eine Anwendungseinstellungsdatei, die zwei anwendungsspezifische Einstellungen und zwei benutzerspezifische Einstellungen definiert. Sie müssen die Namen für Einstellungen hinzufügen, die Sie als Einträge unter dem <configSections> Element am Anfang der Datei erstellt haben.
<?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 Sicherheit
Der Standardeinstellungsanbieter (LocalFileSettingsProvider) speichert Informationen in Konfigurationsdateien als Nur-Text persistent. Dadurch wird die Sicherheit auf die vom Betriebssystem für den aktuellen Benutzer bereitgestellte Sicherheit des Dateizugriffs beschränkt. Deshalb sollte mit den in Konfigurationsdateien gespeicherten Informationen vorsichtig umgegangen werden. Eine häufige Verwendung für Anwendungseinstellungen besteht beispielsweise darin, Verbindungszeichenfolgen zu speichern, die auf den Datenspeicher der Anwendung verweisen. Aufgrund von Sicherheitsbedenken sollten solche Zeichenfolgen jedoch keine Kennwörter enthalten. Weitere Informationen zu Verbindungszeichenfolgen finden Sie unter SpecialSetting.
Weitere Informationen
.NET Desktop feedback