Autor Beitrag
mandawar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 25

Win XP, Suse 9.0
3.0
BeitragVerfasst: Mi 01.04.09 16:20 
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:
ausblenden volle Höhe 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 01.04.09 16:27 
user profile iconmandawar hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 25

Win XP, Suse 9.0
3.0
BeitragVerfasst: 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:
ausblenden 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
ausblenden 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