Muchas veces necesitamos crear una estructura de árbol sin saber cual es el nivel de recurrencia de nodos hijos, en programación es posible gracias a la característica de recurrencia un pequeño ejemplo en C# de como invocar a una función desde la misma función haciendo posible la estructuración de un Treeview con una sola función.
void ReadStruct()
{
TreeNode node;
treeView1.Nodes.Clear();
node = treeView1.Nodes.Add(“Nodo padre");
node.Tag = contenedordenodos;
foreach (Nodo oNodo in contenedordenodos.Nodos)
{
AgregaNodo(oNodo,node);
}
}
void AgregaNodo(Nodo oNodo,TreeNode NodeContainer)
{
TreeNode node;
node = NodeContainer.Nodes.Add(oNodo.descripcion);
node.Tag = oNodo;
node.ImageIndex = 0;
node.SelectedImageIndex = 1;
foreach (Nodo oNodoX in oNodo.Nodos)
{
AgregaNodo(oNodoX,node);
}
}
Para hacer posible este tipo de estructuración creamos anteriormente una clase Serializable [Osea que permita guardar su estructura y contenido en archivos.] que contenga en forma jerargica la información de los nodos. en este caso el código con el que está creada la clase para este ejemplo es el siguiente:
[Serializable] //// Objetivo que se pueda guardar en un archivo esto
public class Nodo
{
public Collection<Nodo> Nodos = new Collection<Nodo>();
public Nodo()
{
descripcion = "Nuevo Nodo";
}
}
una de las propiedades es “Nodos” que es una colección de objetos de la misma clase, lo que permite crear la estructura jerargica.
[Serializable] Permite guardar el contenido de esta clase en tiempo de ejecución teniendo la posibilidad de recuperarla y llenar el Tree tal como lo dejamos.
No hay comentarios:
Publicar un comentario