Tengo un control TreeView en mi aplicación WinForms .NET que tiene múltiples niveles de childnodes que tienen childnodes con más childnodes, sin profundidad definida. Cuando un usuario selecciona un nodo padre (no necesariamente en el nivel raíz), ¿cómo puedo obtener una lista de todos los nodos beneficiarios de ese nodo padre?Cómo obtener una lista de todos los nodos secundarios en TreeView en .NET
Por ejemplo, empecé con esto:
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
El problema es que esta profundidad de bucle se define y yo sólo estoy poniendo nodos enterrado abajo de tres niveles. ¿Qué pasa si la próxima vez que el usuario selecciona un nodo padre, hay siete niveles?
Solo una edición rápida: la línea 3 debería llamar a GetAllChildren –
@ [Matt Hanson]: línea 3 corregida según los comentarios –
Sugeriría que no llame a esto 'GetChildren' ya que no solo obtiene hijos (es decir, nodos directamente debajo de la corriente uno) también tiene nietos, bisnietos, etc. Para mayor claridad, me parece mejor tener 'GetDescendants' para todos los descendientes y' GetChildren' para el nivel inmediatamente inferior. – Keith