Wie speichere ich Benutzereinstellungen in einer Windows Forms Anwendung?
- Grundlage: Die Settings-Datei
- Benutzereinstellungen definieren
- Lesen und Schreiben von Einstellungen im Code
- Beispiel
- Wo werden die Benutzereinstellungen gespeichert?
- Weitere Möglichkeiten
- Fazit
In Windows Forms Anwendungen ist das Speichern von Benutzereinstellungen eine häufige Anforderung, um den Zustand oder Präferenzen des Benutzers zwischen den Sitzungen beizubehalten. Zum Glück bietet das .NET Framework eine einfache und integrierte Möglichkeit, um solche Einstellungen bequem zu verwalten – die sogenannten Anwendungs- und Benutzereinstellungen (Application Settings). Diese basieren auf der Settings-Datei, die typischerweise im Projekt automatisch angelegt wird.
Grundlage: Die Settings-Datei
In jedem Windows Forms Projekt gibt es eine Datei namens Settings.settings, welche über den Projektmappen-Explorer unter dem Reiter Eigenschaften zu finden ist. Hier können Sie neue Einstellungen definieren, Datentypen und Standardwerte zuweisen. Die Einstellungen können auf zwei unterschiedliche Ebenen angelegt werden: Application und User. Die Application-Einstellungen sind schreibgeschützt zur Laufzeit und gelten für alle Benutzer, während User-Einstellungen pro Benutzer gespeichert und änderbar sind.
Benutzereinstellungen definieren
Um eine Benutzereinstellung hinzuzufügen, öffnen Sie die Settings.settings-Datei und fügen eine neue Einstellung hinzu. Geben Sie einen Namen, den Typ (z.B. string, int, bool) und einen Standardwert ein. Wichtig ist, dass der Scope auf User eingestellt wird, damit der Wert individuell für jeden Benutzer geändert und gespeichert werden kann.
Lesen und Schreiben von Einstellungen im Code
Im Quellcode können Sie dann ganz einfach auf die Einstellungen zugreifen, indem Sie die automatisch generierte Klasse Properties.Settings.Default verwenden. Zur Laufzeit lesen Sie vorhandene Werte einfach über den jeweiligen Eigenschaftsnamen aus, beispielsweise Properties.Settings.Default.Benutzername. Um Werte zu ändern, weisen Sie der Eigenschaft einen neuen Wert zu und rufen anschließend Properties.Settings.Default.Save() auf, um die Änderungen dauerhaft zu speichern.
Beispiel
Angenommen, Sie möchten den Benutzernamen speichern, den der Benutzer in einem Textfeld eingibt. So könnten Sie das umsetzen:
private void Form1_Load(object sender, EventArgs e){ // Beim Start des Formulars den gespeicherten Benutzernamen laden textBoxBenutzername.Text = Properties.Settings.Default.Benutzername;}private void buttonSpeichern_Click(object sender, EventArgs e){ // Benutzername aus TextBox speichern Properties.Settings.Default.Benutzername = textBoxBenutzername.Text; Properties.Settings.Default.Save(); MessageBox.Show("Benutzereinstellungen wurden gespeichert.");}Wo werden die Benutzereinstellungen gespeichert?
Die Benutzereinstellungen werden in einer speziellen Datei im Benutzerprofil des jeweiligen Windows-Benutzers gespeichert, und zwar in einem Pfad ähnlich wie:
C:\Users\ \AppData\Local\ \ _...\user.config
Dies stellt sicher, dass jeder Benutzer seine eigenen individuellen Einstellungen hat, ohne dass die Daten der anderen Benutzer beeinflusst oder überschrieben werden.
Weitere Möglichkeiten
Falls komplexere Einstellungen oder Konfigurationen benötigt werden, können auch alternative Speichermethoden eingesetzt werden. Dazu zählen das Schreiben in eigene XML-, JSON- oder INI-Dateien, das Speichern in einer Datenbank oder die Verwendung der Windows Registry. Allerdings ist die Verwendung der .NET-eigenen Settings-Klasse für die meisten Szenarien ausreichend und sehr komfortabel.
Fazit
Das Speichern von Benutzereinstellungen in Windows Forms Anwendungen gelingt am einfachsten und effektivsten über die integrierte Settings-Funktionalität von .NET. Durch die Definition von User-Einstellungen in der Settings.settings-Datei und das Lesen bzw. Schreiben über Properties.Settings.Default können individuelle Einstellungen pro Benutzer elegant und ohne großen Programmieraufwand realisiert werden.