C#, estructura de arbol con TreeView
Tiempo de lectura: 1 minutos
Crear la rama de una estructura descendente en un control TreeView de C# con un bucle
He de representar una estructura jerárquica de diez niveles de profundidad utilizando el control ViewTree de C#. La estructura a representar corresponde a la rama completa de un dato en particular. Es esta estructura:
raíz
\_ 1
\_ 2
\_ 3
\_ 4
\_ 5
... No sería una buena práctica de programación acabar con código complicado y de difícil lectura, de este tipo:
this.treeView1.SelectedNode =
this.treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Nodes[0];
Empiezo a representarlo en un control TreeView, primero el nodo raíz al que llamo "Estructura"
treeView2.Nodes.Clear();
TreeNode treeNode = new TreeNode("Estructura");
treeView2.Nodes.Add(treeNode);
Ahora tengo que empezar a añadir los hijos, uno a uno. El primero de ellos va bajo el primer nodo ya creado, Nodes[0] en el vector de nodos. Siendo codes[] el vector con mos datos de la jerarquía y CS.Names[] el vector con los descriptivos de cada posición de la jerarquía.
treeView2.Nodes[0].Nodes.Add(codes[0],
codes[0] + " - " + CS.Name[0]);
La idea es ir añadiendo en el nodo actual, o seleccionado, por lo que haremos que el nuevo nodo insertado sea el actual seleccionado:
TreeNode newNode = treeView2.Nodes[0].Nodes.Add(codes[0],
codes[0] + " - " + CS.Name[0]);
treeView2.SelectedNode = newNode;
Y ahora, para hacerlo recurrente, en una colección me guardo los nodos
TreeNodeCollection tnc = treeView2.Nodes;
Ahora ya podemos reinterarlo, para los nueve restantes
for (int i = 1; i < 10; i++)
{
newNode = tnc[0].Nodes[0].Nodes.Add(codes[i],
codes[i] + " - " + CS.Name[i]);
treeView2.SelectedNode = newNode;
tnc = tnc[0].Nodes;
} Y acabamos con la estructura completa
El código completo quedaría así:
CustomerStructure CS = new CustomerStructure();
treeView2.Nodes.Clear();
TreeNode treeNode = new TreeNode("Estructura");
treeView2.Nodes.Add(treeNode);
TreeNode newNode =
treeView2.Nodes[0].Nodes.Add(codes_1[0],
codes_1[0] + " - " + CS.Name[0]);
treeView2.SelectedNode = newNode;
TreeNodeCollection tnc = treeView2.Nodes;
for (int i = 1; i < 10; i++)
{
newNode = tnc[0].Nodes[0].Nodes.Add(codes_1[i],
codes_1[i] + " - " + CS.Name[i]);
treeView2.SelectedNode = newNode;
tnc = tnc[0].Nodes;
}
treeView2.ExpandAll(); - Clase TreeView
https://learn.microsoft.com
