Mam kontrolkę TreeView w mojej aplikacji WinForms .NET, która ma wiele poziomów obiektów potomnych, które mają węzły z większą liczbą obiektów potomnych, bez zdefiniowanej głębokości. Kiedy użytkownik wybierze dowolny węzeł nadrzędny (niekoniecznie na poziomie katalogu głównego), w jaki sposób mogę uzyskać listę wszystkich węzłów poniżej tego węzła nadrzędnego?Jak uzyskać listę wszystkich węzłów podrzędnych w TreeView w .NET
Na przykład, zacząłem się z tym:
Dim nodes As List(Of String)
For Each childNodeLevel1 As TreeNode In parentNode.Nodes
For Each childNodeLevel2 As TreeNode In childNodeLevel1.Nodes
For Each childNodeLevel3 As TreeNode In childNodeLevel2.Nodes
nodes.Add(childNodeLevel3.Text)
Next
Next
Next
Problemem jest to, że głębokość pętla jest zdefiniowana, a ja tylko się węzły pochowany w dół na trzech poziomach. Co się stanie, gdy następnym razem, gdy użytkownik wybierze węzeł nadrzędny, będzie siedem poziomów?
Szybka edycja: Linia 3 powinna zadzwonić do GetAllChildren –
@ [Matt Hanson]: skorygowana linia 3 zgodnie z komentarzami –
Nie sugerowałabym wywoływania tego "GetChildren", ponieważ nie ma po prostu dzieci (tj. Węzłów bezpośrednio pod bieżącym jeden) to także dostaje wnuki, prawnuki i tak dalej. Dla jasności uważam, że lepiej mieć "GetDescendants" dla wszystkich potomków i "GetChildren" tylko na najbliższym niższym poziomie. – Keith