¿Cómo recorrer una lista de objetos que tiene una lista del mismo tipo y agregar cada objeto a TreeView?

Abdel Fattah Radwan

Puede que el título no sea muy claro pero intentaré explicar más aquí ...

Tengo la siguiente clase ...

public class Node
{
    public string Name { get; set; } = string.Empty;

    public List<Node> Children { get; set; } = new List<Node>();

    public Node(string name, List<Node> children)
    {
        Name = name;
        Children = children;
    }

    public Node() {  }
}

Y tengo un TreeView que debería elementos como este ...

- Root
    - Node 0_0
        - Node 1_0
            - Node 2_0
        - Node 1_1
    - Node 0_1
        - Node 1_0
        - Node 1_1

Y así...

Actualmente, utilizo este enfoque ineficiente, malo, piramidal de fatalidad ...

var rootNode = GetNodeFromString();

var rootTreeNode = TreeView1.Items.Add(new TreeNode(rootNode.Name));

foreach (var child0 in rootNode.Children)
{       
    var node1 = rootTreeNode.Items.Add(new TreeNode(child0.Name));  

    foreach (var child1 in node1.Children)
    {
        node1.Items.Add(new TreeNode(child1.Name));

        // Repeat the code 30 more times...
    }
}

¿Hay alguna otra forma en que pueda lograr una profundidad ilimitada? ( no realmente ilimitado, algo así como 128 capas )

Abdel Fattah Radwan

Yo mismo he descubierto una manera de hacer esto en 11 líneas ...

public static TreeNode ToTreeNode(Node root)
{
    var treeNode = new TreeNode(root.Name);

    foreach (var node in root.Children)
    {
        treeNode.Nodes.Add(ToTreeNode(node));
    }

    return treeNode;
}

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

TOP Lista

CalienteEtiquetas

Archivo