Grundfunktion TreeView in VB.Net

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Grundfunktion TreeView in VB.Net

    Hallo ihr,

    ich bin dabei eine Struktur in einen TreeView einzubinden.
    Das klappt (dank des Handbuchs) auch erstmal soweit.
    In dem Baum wird es immer EINEN Root geben und dann darunter (in nur einer Ebene) mehrere Positionen. Im Root wird eine Platte und in den darunter liegenden Unterpunkten die jeweiligen Einarbeitungen erfasst.

    Nun zu meinen Verständnisschwierigkeiten:
    Ich habe noch nicht so ganz verstanden, wie ich den gerade eingefügten Unterpunkt bestimmen kann und bearbeite.

    Ich möchte einen Unterpunkt erstellen und dort einen Key angeben, welcher mit die ID in der Tabelle der Datenbank speichert. Zudem soll anschließend ein Icon angegeben werden (welches sich je nach "Einarbeitung" unterscheidet).

    Nun zu meinem Code... Den aktuellen Root erstelle ich so:

    VB.NET-Quellcode

    1. Me.BearbeitungTreeView.Nodes.Add(New TreeNode(Trim(vArtikelbezeichnung)))


    Die Unterpunkte "versuche" ich so zu erstellen:

    VB.NET-Quellcode

    1. NodSonder = BearbeitungTreeView.Nodes(0).Nodes.Add(sEinarbText, sEinarbText1, 1)

    Als Erläuterung: NodSonder ist als "TreeNode" deklariert und wird an anderer Stelle benötigt (jedoch nicht von mir^^). Dieses ist vom Typ Public. Der TreeView selber nicht.

    Ich habe mir dabei gedacht:
    .Nodes(0) müsste der entsprechende Root sein, da ich nur einen einzigen habe.
    Darunter möchte ich mit .LastNode den zuletzt hinzugefügten Unterpunkt ansprechen. Ist das so richtig?

    Wenn das passt, muss ich noch ein Image zuweisen. Wie mache ich das?
    Ich habe eine "ImageList" eingefügt und dort Icons eingefügt. Die Imagelist heißt TreeViewImageList.

    Ich möchte keinen fertigen Code, sondern im Grunde wissen:
    Wie kann ich den immer aktuell "gerade" hinzugefügten Unterpunkt ansprechen?
    Und wie kann ich einem solchen Unterpunkt ein Icon aus der ImageList zuweisen?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    MemoAnMichSelbst schrieb:

    Ich habe mir dabei gedacht:
    .Nodes(0) müsste der entsprechende Root sein, da ich nur einen einzigen habe.

    TreeView1.Nodes(0) ist der erste "Hauptknoten", TreeView1.Nodes(1) der zweite u.s.w.
    Also wenn du nur einen hast ist das richtig.

    MemoAnMichSelbst schrieb:

    Darunter möchte ich mit .LastNode den zuletzt hinzugefügten Unterpunkt ansprechen. Ist das so richtig?

    Ist ebenfalls korrekt. Mit TreeView1.Nodes(0).LastNode kriegst du den letzen Knoten.

    MemoAnMichSelbst schrieb:

    Wenn das passt, muss ich noch ein Image zuweisen. Wie mache ich das?
    Ich habe eine "ImageList" eingefügt und dort Icons eingefügt. Die Imagelist heißt TreeViewImageList.


    Dann schreibst du:

    VB.NET-Quellcode

    1. TreeView1.ImageList = TreeViewImageList

    Dannach kannst du das Bild des Knoten über .ImageKey ändern.


    Edit:
    Du kannst auch gerade beim erstellen des Knoten das Bild angeben:

    VB.NET-Quellcode

    1. TreeView1.Nodes(0).Nodes.Add("1 Unterknoten").ImageKey = "0"


    Villeicht noch ein Beispiel zum besseren Verständins:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. 'Bilder zuweisen
    2. TreeView1.ImageList = New ImageList
    3. TreeView1.ImageList.Images.Add("0", Image.FromFile("D:\UserData\*****\My Documents\My Pictures\GIBM.png"))
    4. TreeView1.ImageList.Images.Add("1", Image.FromFile("D:\UserData\*****\My Documents\My Pictures\Icon_PNG.png"))
    5. 'Erstellen
    6. TreeView1.Nodes.Add("Hauptknoten").ImageKey = "1"
    7. TreeView1.Nodes(0).Nodes.Add("1 Unterknoten").ImageKey = "0"
    8. TreeView1.Nodes(0).Nodes.Add("2 Unterknoten").ImageKey = "1"

    Mfg Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dancger“ ()

    Hallo und danke für die Antwort.

    Ich habe jetzt Bildchen aber auch nen lustigen Effekt. Und zwar: Er setzt das Rootimage brav...
    Die untergeordneten Knoten kriegen auch ein Bild, jedoch alle das Selbe.
    Wenn ich einen Unterpunkt anklicke, ändert sich das Bild in das Bild, welches das Rootimage ist.

    Nun bin ich verwirrt.

    Ich benutze:

    VB.NET-Quellcode

    1. Me.BearbeitungTreeView.Nodes.Add(New TreeNode(Trim(vArtikelbezeichnung)))
    2. BearbeitungTreeView.ImageIndex = 0

    um den Rootknoten zu erstellen. Ich dachte, damit setzt er das Image des übergeordneten Knoten (gut der kriegt ja auch das richtige Bild). Könnte aber auch heißen: StandardIcon = 0. Wobei das ja auch okay wäre...

    Bei den Unterpunkten setze ich nun die Icons über:

    VB.NET-Quellcode

    1. BearbeitungTreeView.Nodes(0).Nodes.Add(sEinarbText, sEinarbText1).ImageIndex = 1 'MH Angepasst, da so nicht in vb.net verfügbar


    Und ich glaube, irgendwo da muss nen Denkfehler liegen.
    sEinarbText ist der Primärschlüssel aus der Datenbank und sEinarbText1 ist der "Name" der Einarbeitung. Nur falls sich gefragt wird, was ich da mache ^^

    PS: Die Imagelist habe ich im Designer schon dem TreeView zugewiesen, deshalb habe ich mir das "TreeView1.ImageList = TreeViewImageList" gespart.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Nagut, dass er bisl mit den Icons hüpft, soll mich für die Funktionsfähigkeit erstmal nicht stören...
    Aber eins habe ich noch nicht so ganz durchblickt...
    Gibt es eine Möglichkeit das "Child" eines Knotens anzusprechen...

    Früher ging ja sowas wie:

    VB.NET-Quellcode

    1. TreeView.SelectedNode.Child.LastSibling.key


    Aber wie ich das in .Net bewerkstelligen soll, weiß ich noch nicht so recht.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D