Zum Inhalt springen

[c#] UserSettings applikationsweit speichern


arrayhunter

Empfohlene Beiträge

Da gibts mehrere Möglichkeiten:

Man kann z.B. eine Klasse bauen, die statisch alle Programmeinstellungen speichert und über statische Properties den Zugriff bietet.

Wenn du die Daten über die Laufzeit des Programms hinaus speichern möchtest, bietet sich bei Windows-Systemen die Registry an (Microsoft.Win32.RegistryKey-Klasse), allerdings ist dein Ansatz mit der XML-Datei auch nicht verachtenswert.

Allein, ich würde Daten, die während der Laufzeit oft gelesen/geschrieben werden, nicht nur in einer Datei/Registry halten, da man sonst unnötige und bremsende Zugriffe hat, sondern jene vielmehr, wie oben erwähnt, im Arbeitsspeicher halten und nur bei Programmbeginn und -ende/-abbruch fest schreiben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dem kann ich nur beipflichten. Speziell die speicherung in der Win-32 Registry geht dabei auch sehr komfortabel und einfach (2-Zeiler), ebenso wie das auslesen.

Wenn du das Auslesen aller Infos dann noch in eine Programmweite Info-Klasse machst die die Daten über statische Attribute nach aussen darstellt hast du in deinem restlichen Programm einen echt schnellen, sauberen, sicheren und vorallem einfach zu wartenden zugriff.

Ich speziell hab auch noch das erstellen von registry-Pfaden und prüfen auf versionen etc in diese Info-KLasse gepackt und mein restliches programm damit wesentlich übersichtlicher gemacht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich speziell hab auch noch das erstellen von registry-Pfaden und prüfen auf versionen etc in diese Info-KLasse gepackt und mein restliches programm damit wesentlich übersichtlicher gemacht.

jo, so macht man das. man kann die klasse dann auch in anderen programmen verwenden und die klasse so ausbauen, dass bei ggf. fehlenden einträgen ein wizard startet in den der user dann seine daten schreibt. ideal bei rechnern mit mehreren benutzern. einmal instelliert kann jeder user seine eigene konfig haben.

bigredeyes

Link zu diesem Kommentar
Auf anderen Seiten teilen

Im Endeffekt ist die Registry ja auch nichts anderes als eine "groooooße" XML Configdatei. Nur dass du dir die ganze Ausleserei halt wesentlich einfacher machst .... uuuund ... du kannst allgemeingültige teile und teile die user-spezifisch sind soar gemeinsam reinpacken in eine!! datei und kein anderer kann drauf zugreiffen (versuch das mal mit deiner xml)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich hab das bei einem Programm von mir so gelöst, dass ich eine Options Klasse geschrieben habe, die alle Daten für das Programm beinhaltet, so dass sie zur Laufzeit immer schnell im Zugriff sind.

Dann habe ich von mentalis.org den IniReader bei mir eingebunden, mit dem die Daten von der Options Klasse dann beim Programmstart eingelesen werden und beim Speichern der Options in die Inifile zurückgeschrieben werden. Der IniReader ist echt nützlich, da sie auch die Option bietet Default Werte zu laden, wenn die IniFile oder ein Eintrag darin nicht gefunden wird.

Gruß

LordK

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke für eure Antworten...

ich habe mir das Isolated Storage ausgesucht, um meine Benutzerdaten zu speichern , in welcher dann die Daten serialisiert und verschlüsselt werden sollen.

die frage ist nur noch, ob ich die Settings in Properties halten soll oder lieber in static members und wie soll ich am optimalsten meine Settingsklasse schreiben ?

bei Properties habe ich die Befürchtung, dass es irgendwann recht unübersichtlich wird , zumindest bei sehr vielen UserSettings ( z. Zt. ca. 25 Variablen), und die dann von Form zu Form mitzuschleppen, empfinde ich doch als recht mühsam.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok, wahrscheinlich brauche ich noch etwas Hilfe:


class Settings

{

     private static string connString;


      public string ConnString

      {

          get { // Connectionstring aus xml holen }

          set { //als xml in Config schreiben }

       }

}


// Formular

// in Main der Form


// String aus xml holen

SqlConnection conn = Settings.ConnString 

// bzw.

// setzen und speichern

Settings.connString = "local...."; Connection selber setzen


wäre das Korrekt ?

habe jetzt leider kein VS.NET auf dem Notebook und kann es leider nicht testen...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...