Um Aufzählungen konfigurierbar in einer Applikation zu speichern, kann man dazu die UserSettings benutzen.

Dazu definiert man unter Properties/Settings.settings eine Varibale vom Type „System.Collection.Spezialized.Collection“ und gibt dem die entsprechenden Werte. Wenn diese gespeichert sind, wird die app.config um diese erweitert:


1
2
3
4
5
6
7
8
9
10
<setting name="Entities" serializeAs="Xml">
    <value>
        <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <string>Customer</string>
            <string>Employee</string>
            <string>Agent</string>
        </ArrayOfString>
    </value>
</setting>

dann erstelle ich eine editierbare Combobox (XAML Beispiel) und füge die entsprechenden Werte aus der StringCollection hinzu:


1
<ComboBox Grid.Row="0" Grid.Column="0" Name="cbEntiaet" IsEditable="True" />
1
2
3
4
5
6
7
8
StringCollection entities = Properties.Settings.Default.Entities;
 
if (entities != null)
    foreach (var entity in entities)
    {
        //der combobox die items aus der StringCollection hinzufuegen
        cbEntiaet.Items.Add(entity);
    }

Soweit so gut. Nun kann man dem Anwender auch ermöglichen, in der Laufzeit eigene Werte hinzuzufügen. Diese sollen ihm auch nach einem Neustart der Anwendung wieder zur verfügung stehen.

Hier speichere ich, in einem Event, Buttonclick o.ä., den neuen Wert. Dazu steht mir auch die soeben erstellte Variable zur Verfügung:


1
2
3
4
5
if (!Properties.Settings.Default.Entities.Contains(cbEntiaet.Text) && !string.IsNullOrEmpty(cbEntiaet.Text))
{
    cbEntiaet.Items.Add(cbEntiaet.Text);
    Properties.Settings.Default.Entities.Add(cbEntiaet.Text);
}

Natürlich darf man nicht vergessen diesen noch zu speichern:

1
Properties.Settings.Default.Save();

Um einen Wert aus der Liste zu löschen:

1
Properties.Settings.Default.Entities.Remove(cbEntiaet.Text);

und speichern nicht vergessen ; )

Nun, nun stellte sich mir die Frage, wo werden diese neuen Werte denn gespeichert? Diese Frage stellte auch mein Kollege auf StackOverflow, wo als Antwort steht, das die lokal beim User abgespeichert werden. Bei XP z.B findet man diese dann unter


1
C:\Dokumente und Einstellungen\[USER]\Lokale Einstellungen\Anwendungsdaten\[PROJECTNAME]\[APPLICATION].ResourceXWr_Url_syjydbfqftg1ii2x4tk44y4cakdgnvzz\1.0.0.0

oder einfach nach *user.config* innerhalb des WindowsUser suchen ; )

Gespeichert werden hier NUR die Eingaben die durch dem Anwender hinzugefügt werden. Die Informationen in der app.exe.config bleiben davon unberührt.

Viel Spaß beim entwickeln ; )

Aufzählungen speichern – C# Quicky
Markiert in: