VB.NET – Farben abspeichern und laden

Häufig stehen Programmierer vor der Aufgabe, dem Kunden die Möglichkeit zu geben, Farben für besimmte Aktionen selber auswählen zu lassen, zum Beispiel für die Farbe einer Form oder der Buttons.

Nach Beendigung des Programms soll dann diese Farbe aber bei einem erneuten Programmstart wieder zur Verfügung stehen.

Und da kommt der ein oder andere VB.NET / C#  Neuling ins Grübeln.

Das Auswählen einer Farbe ist erstmal ganz einfach, denn hierfür bietet das Visual Studio dem VB.NET- und C#- Programmierer das Steuerelement „ColorDialog“ an.

Als Rückgabewert erhaltet Ihr eine Structure vom Typ „Color“ aus dem Namespace System.Drawing. Diese Structure könnt Ihr dann direkt weiterverarbeiten, zum Beispiel an die Backgroundcolor-Eigenschaft eines Steuerelementes anbinden.

Soviel mit dem bekannten, was Ihr auch in fast jedem VB.NET – Buch findet. Aber wie kann ich nun diese Farbe abspeichern, damit sie beim nächsten Start immer noch zur Verfügung steht?

Da wir diese ganze Structure nicht einfach als String abspeichern können, und das Abspeichern von „color.black“ natürlich auch nicht zum gewünschten Erfolg führt, müssen wir uns was anderes überlegen.

Die Lösung liegt nahe:

Wir speichern die Farbe im  Argb-Format ab, da hier die Farbe in druckbaren Zeichen dargestellt wird, die man dann auch einfach abspeichern kann.

Hierfür müssen wir zunächst die Color-Structure in das Argb-Format und anschließend in einen String um wandeln.

In VB.NET sieht das dann wie folgt aus:

strArgb = (MeineFarbe.ToArgb).ToString

Diesen String können wir nun bequem in die Registry oder eine Schema-Datei schreiben.

Zurück geht es genau anders herum: Nachdem wir unsere Schema-Datei eingelesen haben, müssen wir zu erst den Argb-String in eine Integerzahl umwandeln, diese wandeln wir dann wiederum in einen Color-Typ um.

Hier wieder ein Beispiel- Programmcode in VB.NET:

MeineFarbe = Color.FromArgb(CInt(strArgb))

So, das war es auch schon, nichts anspruchvolles, man muss nur wissen wie 😉