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 )
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
Déjame decir algunas palabras