Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[c#] UserSettings applikationsweit speichern

Empfohlene Antworten

Veröffentlicht

hallo,

wie speichert ihr in C# eure Programmeinstellungen ?

in der AppSettings kann ic h ja nichts reinschreiben, also hab ich gedacht in einer eigenen Config.xml die Daten eintragen...

wie kann ich zum Bsp. einen String in jedem Form meiner Anwendung aufrufen bzw. ändern ?

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.

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.

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

hallo,

hierfür habe ich eine klasse geschrieben welche eine config.xml ausliest.

in dieser klasse sind natürlich auch sachen drin, wie datei anlegen, knoten anlegen, schreiben ...

Ciao

Antibiotik

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)

hallo,

dein vorschlag ist mit sicherheit auch eine gute lösung. für unsere anforderung reicht die xml datei voll aus und deshalb lassen wir die registry in ruhe ;-).

Ciao

Antibiotik

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

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.

Was meinst du mit "von Form zu Form mitschleppen". Ich würde es mit public static <Property> machen, wer weiß, ob du nicht noch ne Validierung einbauen willst, die z.B. bei einer Einstellung nur bestimmte Werte zuläßt.

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...

Wenn ich mich nicht irre müsste es sorum sein:


      private string connString;


      public static string ConnString

      {

          get { // Connectionstring aus xml holen }

          set { //als xml in Config schreiben }

       }

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.