Wie speichere ich Konfigurationseinstellungen meiner Anwender?

Veröffentlicht: 27. Jun 2007
Von Thomas Wendel

Das Problem

Komplexere Windowsanwendungen geben dem User meistens die Möglichkeit eigene Einstellungen zu treffen die dann auch gespeichert und beim nächsten Start präsent sein sollen. Dies beginnt bereits bei der Position und Größe des Fensters und geht bis hin zur Speicherung der bevorzugten Auswahlmöglichkeiten einer Auswahlbox, der Fensterfarbe, etc.

Dinge die vom Benutzer konfiguriert werden sollten benutzerabhängig gespeichert werden da ein anderer Benutzer sicher andere Einstellungen haben will.

Die Lösung

Windows-Anwendungen die vom Visual Studio Assistenten erzeugt wurden verfügen über einen Ordner „Properties“ in dem sich ein „Settings“-Eintrag befindet. Über diesen Eintrag lassen sich alle variablen Einstellungsmöglichkeiten erstellen, dafür Gültigkeitsbereiche und Standardwerte festlegen.

Hier werden die ganzen variablen Dinge hinterlegt die später vom User verändert werden und bei Programmende gespeichert werden. Der Typ legt den Datentyp der Variable fest, außerdem kann hier der Gültigkeitsbereich festgelegt werden. Man kann zwischen Benutzer und Applikation wählen, je nachdem ob diese Einstellung für alle oder nur für den aktuellen Benutzer geändert werden soll. Ein Standardwert lässt sich ebenso hinterlegen.

Aus dem Code lässt sich über „Properties.Settings.Default“ auf die hier hinterlegten Variablen zugreifen. Ideale Stelle um beispielsweise die Größe des Fensters zu laden ist das „Load“-Event des Formulars:

Properties.Settings settings = Properties.Settings.Default;
this.Size = settings.formsize;      

Um nun Änderungen zu Speichern die vom User vorgenommen wurden bietet sich das FormClosed-Event des Formulars an:

Properties.Settings settings = Properties.Settings.Default;
settings.formsize = this.Size;
settings.Save();      

Wichtig ist hierbei der abschließende Methodenaufruf „Save()“ der die Änderungen in einer Datei speichert. Die Datei wird, konform zum Windows-Ordnersystem, im Userordner unter „Anwendungsdaten“ abgelegt. Beim nächsten Start des Programmes wird diese Datei automatisch ausgelesen und überschreibt dann die Standardwerte der Settings.

Der Code

// Einstellungen durch Standardsettings überschreiben
Properties.Settings settings = Properties.Settings.Default;
this.Size = settings.formsize;
// Einstellungen in die Settings schreiben und speichern
Properties.Settings settings = Properties.Settings.Default;
settings.formsize = this.Size;
settings.Save();    
  

Anmerkungen

Innerhalb der „Anwendungsdaten“ des Benutzerverzeichnisses wird zum Speichern der Einstellungsdatei ein Ordner mit dem Namen des Herstellers (siehe AssemblyCompany in der AssemblyInfo) angelegt. Innerhalb dieses Ordners folgt der Dateiname und dort wiederum die Assembly-Version. Erst dann folgt eine XML-Datei die die Einstellungen enthält.