Veröffentlicht 8. März 200520 j 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 ?
9. März 200520 j 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.
9. März 200520 j 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.
9. März 200520 j 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
9. März 200520 j 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
10. März 200520 j 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)
10. März 200520 j 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
10. März 200520 j 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
10. März 200520 j 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.
10. März 200520 j 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.
10. März 200520 j 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...
10. März 200520 j 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.