none
Aus der MSDN Hotline: Nodes zu TreeView hinzufügen (Windows Forms, VB.net) RRS feed

  • Allgemeine Diskussion

  • Hallo zusammen,

    heute wurde uns bei der MSDN Hotline unter anderem folgende Frage gestellt:
    Wie kann ich zu einem TreeView zur Laufzeit Nodes hinzufügen, so dass immer der letzten Node eine neue Ebene hinzugefügt wird ohne dabei TreeView.Nodes(0).Nodes(0)...Nodes(0).Add(...) zugreifen zu müssen?

    Unsere Antwort bzw. unser Lösungsvorschlag darauf war:
    Man kann den wiederholten Zugriff auf die Nodes Eigenschaft [0] der Klasse TreeNodeCollection [1] durch die Verwendung einer rekursiven Methode umgehen. Eine rekursive Methode ist eine Methode, die sich selbst immer wieder bis zum Erreichen einer Bedingung aufruft (in diesem Fall bis die unterste Ebene im Baum erreicht ist).

    Dafür definiert man eine Methode, die einen Parameter vom Typ TreeNode oder TreeNodeCollection hat. In dieser Methode überprüft man, ob das Argument keine Nodes hat (mittels TreeNodeCollection.Count), das entspricht dann der untersten Ebene des Baumes. Sollten wir uns noch nicht in der untersten Ebene des Baumes befinden, dann wird die Methode abermals mit dem Parameter Argument(0).Nodes aufgerufen, um im nächsten Aufruf der Methode eine Ebene tiefer im Baum zu arbeiten. Erst wenn wir die unterste Ebene erreicht haben fügen wir dann eine neue TreeNode hinzu. So könnte eine Umsetzung des Konzeptes aussehen:

     

    'Aufruf der Methode
    TreeNodeHinzufügen(TreeView1.Nodes, 0)
    

     

    'Rekursive Methode
    Private Sub TreeNodeHinzufügen(ByRef tnc As TreeNodeCollection, ByVal ebene As Integer)
      If (tnc.Count <> 0) Then 'wenn die aktuelle ebene nicht die unterste ist
    
        'nochmal Methode rekursiv aufrufen -> beim nächsten mal sind wir in der Methode dann eine Ebene tiefer
        TreeNodeHinzufügen(tnc(0).Nodes, ebene + 1)     
        Return
      End If
      'hier ist tnc die letzte Ebene des TreeViews
      tnc.Add("Element " + ebene.ToString())
    End Sub
    


    [0] http://msdn.microsoft.com/de-de/library/system.windows.forms.treeview.nodes%28v=VS.80%29.aspx
    [1] http://msdn.microsoft.com/de-de/library/system.windows.forms.treenodecollection%28v=VS.80%29.aspx

    Wir hoffen, vielen Besuchern der MSDN Foren durch das Posten dieses Problems und einer möglichen Lösung weiterhelfen zu können.

    Viele Grüße,
    MSDN Hotline für MSDN Online Deutschland

    Disclaimer:
    Bitte haben Sie Verständnis dafür, dass wir hier auf Rückfragen gar nicht oder nur sehr zeitverzögert antworten können.
    Bitte nutzen Sie für Rückfragen oder neue Fragen den telefonischen Weg über die MSDN Hotline: http://www.msdn-online.de/Hotline 
    MSDN Hotline: Schnelle & kompetente Hilfe für Entwickler: kostenfrei!

    Es gelten für die MSDN Hotline und dieses Posting diese Nutzungsbedingungen, Hinweise zu Markenzeichen sowie die allgemein gültigen Informationen zur Datensicherheit sowie die gesonderten Nutzungsbedingungen für die MSDN Hotline.

    Montag, 17. Januar 2011 15:15