Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61

Deprecated: substr(): Passing null to parameter #1 ($string) of type string is deprecated in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/config.php on line 61
C#, estructura de arbol con TreeView
Source Code

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/main/articles.php on line 18

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

TreeView 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();
Referencias

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 10

Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/navigation.inc.php on line 21
Xavier es un desarrollador senior full stack y opera desde la ciudad mediterránea de Barcelona. Le encantan las tecnologías de software y está convencido que el desarrollo de software es un proceso colaborativo y abierto.
Y es un apasionado de la astronomía y de la fotografía. Lo puedes encontrar en:
Comparte este post


Warning: Undefined array key "typ" in /srv/vhost/diaridigital.net/home/html/sourcecode/includes/footer.inc.php on line 24