Entwickler-Ecke
IO, XML und Registry - Treeview Knoten Inhalte in Textbox laden
bvbborussia - Sa 11.12.10 16:47
Titel: Treeview Knoten Inhalte in Textbox laden
Hallo Zusammen,
ich habe eine XML Datei die ich in ein Treeview einlese. Wie krieg ich, nach klick,einzelne Treeview Knoteninhalte in die Textbox eingefügt? Das Bild welches ich eingefügt habe zeigt das besser.
Vielen Dank.
Gruß
bvbborussia
Th69 - Sa 11.12.10 17:23
Du merkst dir in jedem TreeNode.Tag den zugehörigen Datensatz und schreibst den dann im TreeView.AfterSelect-Ereignis dann die Eigenschaften des Datensatzes in die dazugehörigen TextBoxen. Evtl. kannst bzw. mußt du je Ebene unterschiedliche Daten in die Tag-Eigenschaft schreiben.
Beim Auslesen mußt du dann entsprechend den Tag wieder in den Datensatz-Typ konvertieren, z.B.
C#-Quelltext
1: 2: 3: 4: 5: 6:
| MyDataType datatype = e.Node.Tag as MyDataType; if(datatype != null) { textbox.Text = datatype.Name; } |
P.S: Eine andere Möglichkeit wäre "DataBinding", jedoch unterstützt das der TreeView nicht direkt, sondern du müßtest eine BindingSource, DataTable o.ä verwenden.
bvbborussia - Sa 11.12.10 17:40
Welche Using-Direktive muss ich für das MyDataType einfügen?
Versteh leider nicht ganz wie du das meinst, muss dabei auch sagen das ich nicht viele Erfahrung in C# habe.
Th69 - Sa 11.12.10 17:46
Damit meine ich einfach deine "gsd_geraete_daten.geraet" (oder wie auch immer dein Datentyp heißt -).
huuuuuh - Sa 11.12.10 17:46
MyDateType = MeinDatenTyp. in diesem Fall mehr dein Datentyp. also da, wo du während das Programm läuft, die Daten reinspeicherst. Das TreeView selbst kann die Daten nicht speichern...
bvbborussia - Sa 11.12.10 18:00
Wie komme ich den auf mein Datentyp mit C#? Über XElement oder wie?
Th69 - Sa 11.12.10 18:08
Wie liest du denn überhaupt die XML-Datei ein und erzeugst den TreeView daraus. Dafür benötigst du doch schon deinen eigenen Datentypen :?:
bvbborussia - Sa 11.12.10 18:16
Also so les ich die Datei ein und füg die im Treeview ein:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58:
| private void xmlDeviceData_Click(object sender, EventArgs e) { openFileDialog1.InitialDirectory = "C:/Users/Bleri/Documents/Visual Studio 2010/Projects/MieleProjekt"; openFileDialog1.Title = "Lade die XMLDeviceData-Datei"; openFileDialog1.FileName = "XMLDeviceData"; openFileDialog1.Filter = "XML Datei|*.xml"; if (openFileDialog1.ShowDialog() == DialogResult.OK) { sr = new System.IO.StreamReader(openFileDialog1.FileName);
xmldoc = new XmlDocument(); xmldoc.Load(sr); treeView.Nodes.Clear();
treeView.Nodes.Add(new TreeNode(xmldoc.DocumentElement.LocalName));
TreeNode tNode = new TreeNode();
tNode = treeView.Nodes[0];
AddNode(xmldoc.DocumentElement, tNode);
treeView.ExpandAll(); treeView.CollapseAll();
} } private void AddNode(XmlNode inXmlNode, TreeNode inTreeNode) {
XmlNode xNode; TreeNode tNode; XmlNodeList nodeList; int i; if (inXmlNode.HasChildNodes) { nodeList = inXmlNode.ChildNodes;
for (i = 0; i <= nodeList.Count - 1; i++) { xNode = inXmlNode.ChildNodes[i]; inTreeNode.Nodes.Add(new TreeNode(xNode.Name)); tNode = inTreeNode.Nodes[i]; AddNode(xNode, tNode); } } else { inTreeNode.Text = (inXmlNode.OuterXml).Trim(); } } |
Vielen Dank Th69...
Moderiert von
Christian S.: C#-Tags hinzugefügt
bvbborussia - Sa 11.12.10 19:06
Ja ich hoffe wie können auch heute gewinnen!!!
Nein das ist ein privates Porjekt. Ich will XML-Dateien nicht mehr über einen Editor befüllen und ändern sondern das ganze programmtechnisch realisieren. Ich studiere auch nebenbei Informatik und bin jetzt halt in der Frühphase der Programmierung, deshalb möchte ich mir das durch solche eigene ausgedachte Projekt erlernen.
Ich werde mir die Links auf jedenfall angucken und ich hoffe ich versteh das ansonsten mußt du mir wohl weiter helfen.
Vielen Dank für dein Mühe Th69
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!