Laden...

Serializer für eine Treeview

Erstellt von christof.k vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.718 Views
C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 18 Jahren
Serializer für eine Treeview

Hallo!

Ich habe eine Frage zum serializieren von treeviews.
Nachdem ich schon viel Zeit mit der Suche nach diesem Thema verbracht habe, und keine adäquate Lösung dabei war, wollte ich diese Frage nochmals aufwerfen:

Da die Treeview prinzipiell serialisierbar ist, was muss ich anstellen, um meine Treeview zu serialisieren und zu deserialisieren?

Auf diesem Gebiet bin ich Anfänger, deshalb würde mich auch interessieren, warum meine Lösung:

using (FileStream fs = File.OpenWrite("v:\\1.xml"))
{
	XmlTextWriter writer = new XmlTextWriter(fs, System.Text.Encoding.UTF8);
	writer.Formatting = Formatting.Indented;
	serializer.Serialize(writer, treeView1); 
	fs.Close();
}

nicht funktioniert.

Vielen Dank
Christof

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo christof.k,

TreeView ist m.E. nicht serialisierbar, TreeNodes aber schon. Aber wenn du mich fragst, würde ich auch TreeNodes nicht serialisieren, sondern die Datenstuktur, die dem im TreeView aufgebauten Wald entspricht. Ich würde also die Business- oder Modellobjekte serialisieren, nicht deren UI-Repräsentation.

herbivore

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 18 Jahren

Hallo!

Ich habe mich missverständlich ausgedrückt.
Ich möchte nur die Daten Serialisieren. Du hast recht, mit meinem Ansatz habe ich versucht, das treeview selbst zu serialisieren.
Hast Du noch ein paar tips, wie ich die Daten meines treeviews serialisieren kann (und dann auch wieder zurücklesen?)

Vielen Dank
Christof

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo christof.k,

ich mich scheinbar auch. 🙂 Daten gibt es aus meiner Sicht nicht. Es gibt nur Objekte. Es sollten Objekte zu Klassen sein, die du selbst geschrieben hast: Business-Objekte eben. Dann machst du diese Klassen [Serializable] und kannst dann deren Objekte direkt serialisieren.

herbivore

C
christof.k Themenstarter:in
159 Beiträge seit 2005
vor 18 Jahren

Hi!

Ich glaube das übersteigt mein derzeitiges c# Wissen.
An dieser Stelle wären Beispiele super (wenn Du die Zeit dafür hast).

Aber verstehe ich das richtig: Meine Nodes sind doch bereits Objekte, die Frage ist nun, kann ich sie direkt als ganzes serializieren, oder muss ich rekursiv durch mein treeview laufen und alle nodes serialisieren?

Vielen Dank schonmal
Christof

P.S.: Klingt nach einer langwierigeren Sache 🙂

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo christof.k,

natürlich sind die TreeNodes Objekte und natürlich kannst du rekursiv über die Nodes rüberlaufen und diese serialisieren. Rekursiv deshalb (ohne dass ich das ausprobiert habe), weil die TreeNodeCollection in der Doku nicht als serialisierbar gekennzeichnet ist. Demzufolge werden wohl die Kinderknoten eines TreeNodes nicht mitserialisiert und man muss das (eben rekursiv) selber tun (wie gesagt nicht ausprobiert).

Wenn du eigene Business- oder Modell-Objekte hast (also Klassen hast für die Dinge, der realen Welt, um die es in deinem Programm geht: Fussballmatch, Versicherter, Bankkonto, Adresse, Datei, Kategorie, Spielfeld, ... um mal ein paar willkürliche Beispiele zu nennen) und diese die Baumstruktur schon in sich enthalten enthält, dann brauchst du nur das oder die Wurzelobjekte zu serialisieren und schon wird die ganze Baumstruktur serialisiert und kann auch auf einen Rutsch deserialisiert werden.

herbivore