Treeview Unterordner automatisch setzen?

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von DJ_Mic.

    Treeview Unterordner automatisch setzen?

    Hi,

    ich hab eine Frage, und zwar schreibe ich ein Programm und dort benutze ich eine Treeview.
    Ich habe 3 Hauptkategorien und UnterOrdner, und meine Frage lautet, ist es möglich zu den Unterordnern per Code nochmal Unterordner zu setzen?

    Ich zeigs euch anhand dieses Beispiels.

    Es sieht so aus:

    - Auto
    - BMW
    -Räder
    -Frontstoßstange
    - Audi


    Ich habe aber viel mehr Automarken, ist es möglich das ich per Code die Räder und Frontstoßstange eintrage?
    Weil wenn ich das über die GUi mach, dauert das länger und dachte es geht bestimmt via Code.

    Kann mir jemand helfen?

    Mfg
    DEnnis

    DJ_Mic schrieb:

    Ich habe aber viel mehr Automarken, ist es möglich das ich per Code die Räder und Frontstoßstange eintrage?
    Weil wenn ich das über die GUi mach, dauert das länger und dachte es geht bestimmt via Code.

    Natürlich kannst Du ein Treeview vollständig über Code verwalten.

    Jedes Element eines Treeview ist ein sogenannter TreeNode und besitzt selber eine .Nodes Collection (=Menge), die seine Unterelemente beinhaltet. Man kann (muss aber nicht) einem TreeNode einen Namen verpassen, so dass man es in der Nodes Collection direkt ansprechen kann.

    VB.NET-Quellcode

    1. ' Root element Auto anlegen: Name, Text
    2. Dim auto As New TreeNode With {.Name = "auto", .Text = "Auto"}
    3. TreeView1.Nodes.Add(auto)
    4. ' BMW anlegen: Name, Text
    5. Dim bmw As New TreeNode With {.Name = "bmw", .Text = "BMW"}
    6. bmw.Nodes.Add("Räder")
    7. bmw.Nodes.Add("Frontstossstange")
    8. auto.Nodes.Add(bmw) ' BMW treenode zur Auto Collection hinzufügen
    9. ' AUDI: wie BMW

    Alles Nähere findest Du in der MSDN Dokumentation zum Theman TreeNode
    Okay hört sich gut an, blos muss ich eben wenn ich 100 Autos hab das per Code lösen.

    Ich dachte an eine For each schleife oder so, aber ich wüsst nicht wie ich das lösen kann. Ich habe ja nicht nur Räder, sonder auch Frontstoßstange, Heckstoßstange, Spoiler, usw.

    Also sind es mehrere Sachen...

    Gibts nich iwie eine Möglichkeit, dass ich einfach eine For each schleife benutze und dabei für jeden Knoten einen Unterordner erstelle mit den folgendenen Unterordnern?
    Das wäre echt top, wenn sowas möglich wäre.


    mfg
    dennis

    DJ_Mic schrieb:

    Gibts nich iwie eine Möglichkeit, dass ich einfach eine For each schleife benutze und dabei für jeden Knoten einen Unterordner erstelle mit den folgendenen Unterordnern?

    So etwa ?

    VB.NET-Quellcode

    1. Dim autoNamen() As String = New String() {"Audi", "BMW", "Chrysler", "Dodge"}
    2. Dim zubehörNamen() As String = New String() {"Armaturenbrett", "Frontspoiler", "Heckspoiler", "Räder", "Radio"}
    3. ' Root element Auto anlegen: Name, Text
    4. Dim auto As New TreeNode With {.Name = "auto", .Text = "Auto"}
    5. TreeView1.Nodes.Add(auto)
    6. ' Fahrzeug Nodes hinzufügen
    7. For Each fzgName As String In autoNamen
    8. Dim tn As New TreeNode With {.Name = fzgName, .Text = fzgName}
    9. ' Zubehör Nodes hinzufügen
    10. For Each zbhName As String In zubehörNamen
    11. tn.Nodes.Add(zbhName)
    12. Next
    13. auto.Nodes.Add(tn)
    14. Next fzgName

    Wesentlich flexibler wärst Du allerdings , wenn Du Deine Daten in einer XML-Datei sichern und laden würdest.
    Genau so, nur habe ich das Problem, dass ich schon mit der GUI die Autonamen hinzugefügt habe!
    Und nun habe ich ca. 30 Autonamen eingetragen.
    Kann ich das auch iwie dann so machen, oder muss ich die Treeview dann mittels Code füllen? Quasi alles von neu?

    mfg
    Dennis

    DJ_Mic schrieb:

    Kann ich das auch iwie dann so machen, oder muss ich die Treeview dann mittels Code füllen? Quasi alles von neu?

    Das kannst Du machen wie Du möchtest, aber 30 Autonamen in ein Array zu setzen sollte nicht so schwer sein. Der Code war allerdings auch nur als Beispiel gedacht wie man mit Treeview, TreeNodes umgeht. Wenn Du nur die Zubehörteil hinzufügen willst so durchlaufe die Treeview1.Nodes Collection mit einer For ... Each Schleife
    Okay, hat perfekt funktioniert danke!

    Nun habe ich aber ein Problem. Und zwar möchte ich gerne wissen wie ich rausfinde, wie die Oberknoten heißen indem der Unterknoten steckt.

    Also so zb.

    - Auto
    - BMW
    -Felgen
    - Audi
    -Felgen

    Wie finde ich nun raus, das diese "Felgen" unter "BMW" und "Auto" steht? Und nicht von Audi?

    mfg
    dennis
    Okay, genau das meine ich, er gibt mir aber blos BMW an, aber die Hauptkategorie "Auto" wird nicht erwähnt.
    Wie kriege ich das hin? Sorry für die dummen fragen, habe schon länger nichts mit vb gemacht.

    EDIT:
    Hat sich erledigt! Habe es folgend gelöst: TreeView1.SelectedNode.FullPath.ToString

    mfg
    dennis

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „DJ_Mic“ ()