Benutzereingaben speichern

Fisch

Mitglied

Hallo,

ich müsste Wissen wie man Benutzereingaben abspeichert.
1. so sachen wie checkedBox true oder false also persönliche Einstellungen des Programms.
2. Werte die in eine RichTextBox eingegeben werden und zeitweise geändert werden
Wenn ich das richtig sehe kommt hierfür ein XMl Dokument oder die Registry in Frage.
Bin mir aber auch nicht sicher. Hab irgenwie zwar was zum erstellen und lesen aus einem XML Dokument gefunden, aber nicht wie man die Werte ändert . Oder liege ich vielleicht total falsch. Wäre jedenfalls super wenn mir jemand helfen könnte. Bin leider nicht so tief in der Materie.

Danke und Gruss

Fisch
 
Re: C# Benutzereingaben speichern

Wenn du nur Benutzereinstellungen speichern willst, ist XML, meiner Meinung nach, etwas zu kompliziert. In diesem Fall verwende ich *.ini Dateien.
hier gibts eine gute Klasse für den INI-Zugriff. Leider in VB.NET

Ich kanns dir leider nur für .NET 1.0 oder .NET 2.0 kompilieren.

Wenn du aber grössere Texte speichern willst, musst du auf XML zurückgreifen. Ich lese die Einstellungen beim Programmstart ein, und erstelle die XML-Datei beim Beenden neu.
So kannst du dich immer darauf verlassen, dass dein Programm auch alle Einstellungen speichert und die Datei vorhanden ist. Es gibt mehrere Möglichkeiten, XML zu schreiben. Ich benutze meistens diese:
Code:
'XML-Datei öffnen
Dim xw As New XmlTextWriter(filePath, Encoding.UTF8)

'Xml-Datei soll formattiert werden
xw.Formatting = Formatting.Indented

'Head
xw.WriteStartDocument()

'RootElement
xw.WriteStartElement("MySettings")

'Irgendwas schreiben
For Each obj As Object In Settings
    xw.WriteElementString("Setting", obj.toString()))
Next

'RootElement abschliessen
xw.WriteEndElement()

'Dokument abschliessen
xw.WriteEndDocument()

'Xml-Datei schliessen
xw.Close()
Ich hoffe, du verstehst das bisschen VB.NET.

Angehängt habe ich eine Klassenbibliothek für .NET 1.0, die unter Anderem die oben genannte Ini-Klasse enthält.
 

Anhänge

  • Ini.zip
    8,8 KB · Aufrufe: 89
Zuletzt bearbeitet:

Das machst du am besten durch die Konfigurationsdatei der Anwendung.
In C# fügst du eine solche wiefolgt hinzu:
- (Wenn du Visual Studio benutzt) Rechte Taste auf dein Projekt -> Hinzufügen -> Anwendungskonfigurationsdatei
- Eine neue Textdatei namens 'App.config' erstellen und manuell dem Projekt hinzufügen.

Diese Datei sollte folgendermaßen aufgebaut sein:
Code:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<appSettings>
	<!--  Hier kommen deine Einstellungen rein -->
	</appSettings>
</configuration>

Die Einstellungen haben das folgende Format:

Code:
<add key="settingName" value="settingValue"/>

Auslesen kannst du die Eigenschaften dann mit dem 'AppSettingsReader' oder der AppSettings Eigenschaft der ConfigurationSettings Klasse:

Code:
System.Configuration.AppSettingsReader ar = 
new System.Configuration.AppSettingsReader();

MessageBox.Show(ar.GetValue
("settingName",typeof(System.String)));

MessageBox.Show(System.Configuration.ConfigurationSettings.AppSettings
["settingName"]);

Wenn du Visual Studio benutzt kannst du zur Entwurfszeit auch im Eigenschaftsfenster 'DynamicProperties' nutzen. Dort gibst du einen Key für eine Eigenschaft an und VS fügt diesen automatisch zur Konfigurationsdatei hinzu.

Eine Methode zum manuellen ändern und speichern von Daten in der Konfigurationsdatei ist mir leider nicht bekannt.
Dies müsstest du dann über ein normales XMLDocument machen.
 
hab auch noch eine mögliche Lösung:

nutz doch einfach eine Resource-Datei

Du musst einfach für jede Resource, die du speichern willst einen Eintrag hinzufügen und die fertig Datei generieren

guckst du hier
Code:
System.Resources.ResourceWriter resWriter = new System.Resources.ResourceWriter("Dateiname.resources");
resWriter.AddResource("CheckBox", Checkbox.Checked);
resWriter.AddResource("Text",RichTextEdit.Text);
resWriter.Generate();
resWriter.Close();
und hier
 
Erstmal danke für die Antworten,

anscheinend bin ich auch noch zu Blöd zum Antworten. Hatte eigentlich Sonntag schon was eingetragen ist aber anscheinend im Nirvana verschwunden, hmm.
jedenfalls wenn ich alles zusammenfasse, ist anscheinen Registry und *.ini out.
Wofür ist die App.conf wenn es keine Methoden zum ändern gibt
Bleibt also noch XML oder die Sache mit der Resource-Datei, werde wohl nicht drumherum kommen mich damit mal intensiever damit zu beschäftigen.
Alexander, hatte ich ganz vergessen, dass ich die Frage schonmal gestellt hatte. Hab es dann jedenfalls aufgegeben und stehe deshalb wieder vor dem selben Probem :)
Hätte mir das unter C# und vor allem mit VS irgendwie einfacher vorgestellt.

Danke und Gruss

Fisch
 
also ich habe auf anhieb was gefunden womit ich die die Konfiguration verändern kann.

Du darfst die Datei nicht als Konfigurationsdatei sehen, sondern musst diese einfach mal als XML behandeln..
Das Heißt deine Fragestellung müste wie Folgt aussehen "Wie ändere ich werte in einer XML-Datei".

meinst du das denn so ? :rolleyes:
ich Denke schon ...
xmlDoc.DocumentElement.SelectSingleNode( "appSettings/add[@key='der_key']/attribute::value" ).Value = "Der wert (value)";


using System.Xml nicht vergessen ;)

Ich hoffe mal das meinst du ... aber scho Goil das die Frage vor 2 Jahren gestellt wurde.
Darf man fragen weshalb diese erneute Frage ?

Gruß
 
ah nochwas ...
Fisch hat gesagt.:
Hätte mir das unter C# und vor allem mit VS irgendwie einfacher vorgestellt.
Das ist schon ziemlich einfach ... was erwartest du ?
Visual Basic sieht Optisch aus wie das Letzte und ich kann mich damit nicht anfreunden.
C# aber ist echt Einfach, leider Brauch man .NET Framework :(

die MSDN ist denke ich mal Dein Bester Freund .. mit der habe ich mich auseinandergesetzt und dadurch mehr als Posetive Lerneffekte erzielen können.
 
Ich denke das ist es was ich eigentlich Wissen wollte :).
Wenn ich die Konfigdatei so ändern kann, wäre ich eigentlich schon zufrieden. Kann ich in der Datei auch Array-Werte ablegen
sähe das dann so aus ?
<add key="settingName[0]" value="settingValue"/>
<add key="settingName[1]" value="settingValue"/>
<add key="settingName[2]" value="settingValue"/>
oder eher komplettes Array <add key="settingName" value="1,2,3,4,5,6"/>

Aber ich denke mal, werde mich mal ein wenig mit XML beschäftigen. Jedenfalls, hast du mir erstmal sehr geholfen, werde das mal testen.
Zum Thema, warum ich die Frage schon wieder stelle, siehe oben. Hab mich einfach damit nicht mehr beschäftigt und mache quasi jetzt weiter wo ich aufgehört habe. Das ich die Frage schonmal gestellt habe, hab ich glatt vergessen :-( .
Gruss

Fisch
 

Neue Beiträge

Zurück