mandawar - Mi 01.04.09 16:20
Titel: xmlTreeview Unternodes erstellen
Hi,
ich arbeite mit einem xmlTreeView, der wohl vom normalen treeView abgeleitet ist. Auf jeden Fall möchte ich unter den Knotenpunkten weitere Knoten bzw Items erstellen, nur das klappt nicht:
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:
| private void FillTreeView(string Ordner) { Int32 i = new Int32(); i=0; if (!Ordner.Contains("tools")) { xmlTreeview1.Nodes.Add(Ordner, Ordner, 0, 0); } string[] strInhalt = Directory.GetFileSystemEntries(Ordner); foreach (string s in strInhalt) { if ((File.GetAttributes(strInhalt[i]) & FileAttributes.Directory) == FileAttributes.Directory) { FillTreeView(strInhalt[i]); } else { if (strInhalt[i].Contains(@".p")) { xmlTreeview1.Nodes[Ordner].Nodes.Add (strInhalt[i],strInhalt[i],"ProcedureIcon","ProcedureIcon"); } else if (strInhalt[i].Contains(@".w")) { xmlTreeview1.Nodes[Ordner].Nodes.Add (strInhalt[i], strInhalt[i], "WindowIcon", "WindowIcon"); } else { xmlTreeview1.Nodes[Ordner].Nodes.Add (strInhalt[i], strInhalt[i]); } } i++; }
} |
Ich bekomme immer eine NullreferenceException :(
Spreche ich die Nodes unter denen ich etwas erstellen will falsch an? Wenn ja wie mach ich es korrekt?
Liebe grüße
Basti
Kha - Mi 01.04.09 16:27
mandawar hat folgendes geschrieben : |
| Ich bekomme immer eine NullreferenceException :( |
Geht es noch etwas genauer, z.B. mit einer Zeilenangabe oder direkt dem Ausdruck, der null ist? Wir sind doch hier nicht bei Heisenbergs ;) .
Eines fällt mir bei deinem Code jedenfalls auf: Wo ist da die Rekursion? Du greifst immer auf die erste und zweite Ebene des TreeViews zu, eigentlich müsstest du der Rekursion doch noch einen XmlTreeNode-Parameter o.Ä. mitgeben. Aber ohne die Klasse zu kennen, ist das natürlich nicht leicht zu beantworten.
PS: Ich frage lieber nicht, was du mit
new Int32() vorhast ;) .
mandawar - Mi 01.04.09 20:35
Naja die Rekursion ist doch da.
Man übergibt einen Ordner an die Funktion, die erstellt einen Node, dann wird geschaut ob es es ein Ordner ist oder nicht.
Wenn ja wird die Funktion neu aufgerufen und so weiter, und wenn in dem übergebenen Ordner keine neuen Unterordner sind sollte es EIGENTLICH einen Unternode erstellen, nur das funktioniert nicht ganz :(
//edit: Gehen wir mal davor aus dass es sich um ein normales TreeView handelt, nicht um dieses erweiterte XmlTreeView...
Mein Problem ist im Moment konkret, dass ich nicht weis wie ich Unternodes erzeuge zu einem bereits bestehendem Node.
Mein Versuch:
C#-Quelltext
1: 2:
| Nodename Nodename NodeText Icon-inaktiv Icon-aktiv xmlTreeview1.Nodes[Ordner].Nodes.Add(strInhalt[i],strInhalt[i],"ProcedureIcon","ProcedureIcon"); |
Das funktioniert aber leider nicht :(
Und ich habe es gerade nochmal versucht stattdessen einen numerischen Index zu nutzen
C#-Quelltext
1:
| xmlTreeview1.Nodes[0].Nodes.Add(); |
Damit funktioniert es, macht aber mein keines Programm nur sinnlos komplizierter.
Gäbe es eine Möglichkeit stattdessen mit den ParentNode Namen zu arbeiten?!
Liebe Grüße
Basti