Benutzereingaben in C# speichern am Beispiel einer Textbox

Auf Wunsch eines Lesers gibt es heute mal eine Runde C# Basics. Nach dem ich ein kleines Snippet zum Umgang mit den AppSettings verbloggt hatte, wurde ich gefragt, wie man denn nun eigentlich mit Hilfe des Snippets Benutzereingaben abspeichern könnte. Gefragt, verbloggt. Hier kommt die Lösung.

Zur Verdeutlichung habe ich heute extra mal ein kleines C#-WinForms-Projekt im Visual Studio angelegt. Auf  das Form kommen jeweils ein Label und eine Textbox. Des Weiteren finden die oben schon erwähnten Funktionen zum Laden und Speichern von Werten in den AppSettings Verwendung.

WinForms Events - Laden und Speichern von Benutzereingaben in den AppSettingsWenn ihr das Projekt angelegt und die Controls hinzugefügt habt, sollte das ganze in etwa wie auf dem nebenstehenden Bild aussehen.

Als nächstes müsst ihr zwei EventHandler anlegen. Am einfachsten geht das über das “Ereignisse-Fenster”. (Das ist jenes, welches im nebenstehenden Bild rot umkringelt ist.)
Dort legt ihr einen EventHandler für das Load-, und einen für das FormClosing-Event an.
Abschließend müssen wir die beiden Methoden nur noch mit Leben füllen. Da der benötigte Code nicht all zu lang ist, gibt es folgende Erklärungen direkt am Quelltext.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;

namespace BenutzereingabenSpeichern
{
    public partial class FormMain : Form
    {
        public FormMain()
        {
            InitializeComponent();
        }

        public string getAppSetting(string key)
        {
            //Laden der AppSettings
            Configuration config = ConfigurationManager.
                                    OpenExeConfiguration(
                                    System.Reflection.Assembly.
                                    GetExecutingAssembly().Location);
            //Zurückgeben der dem Key zugehörigen Value
            return config.AppSettings.Settings[key].Value;
        }

        public void setAppSetting(string key, string value)
        {
            //Laden der AppSettings
            Configuration config = ConfigurationManager.
                                    OpenExeConfiguration(
                                    System.Reflection.Assembly.
                                    GetExecutingAssembly().Location);
            //Überprüfen ob Key existiert
            if (config.AppSettings.Settings[key] != null)
            {
                //Key existiert. Löschen des Keys zum "überschreiben"
                config.AppSettings.Settings.Remove(key);
            }
            //Anlegen eines neuen KeyValue-Paars
            config.AppSettings.Settings.Add(key, value);
            //Speichern der aktualisierten AppSettings
            config.Save(ConfigurationSaveMode.Modified);
        }

        private void FormMain_Load(object sender, EventArgs e)
        {
            try
            {
                //Laden der Eigenschaft aus den Settings
                textBoxEingabe.Text = getAppSetting("benutzerEingabe");
            }
            catch (Exception ee)
            {
                //Fehler abfangen. z.B. nicht vorhandene AppSettings
                textBoxEingabe.Text = ee.Message;
            }
        }

        private void FormMain_FormClosing(object sender, FormClosingEventArgs e)
        {
            //Speichern der Benutzereingabe
            setAppSetting("benutzerEingabe", textBoxEingabe.Text);
        }

    }
}

Ist doch ganz einfach, oder etwa nicht? Solltet ihr noch Fragen haben, schreibt mir einfach einen Kommentar. Wer mag kann sich das ganze Visual Studio Projekt zu diesem Artikel auch herunterladen.

Viele Grüße,
Raffi

3 Kommentare

  1. nenosays:

    super sache
    konnte es umsetzen im user login
    danke

  2. Harosays:

    Download link down, Bitte reupload.

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.