TreeView

Estoy realizando una aplicación en VS 2008 al crear un treeview lo hago con nodos padre y nodos hijo. El conveniente es que deseo que al seleccionar cualquier nodo me enlace con un formulario que previamente he creado. La verdad nunca he trabajado con este método y no se como se realiza. Le pido el favor que sea explicito para seguir desarrollando mi aplicación.
La sentencia es la siguiente:
Private Sub TreeView1_AfterSelect_1(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

1 respuesta

Respuesta
1
Bueno primero tengo que preguntar como vas a llenar tu árbol, si va ser estático (ya tienes predefinidos los enlaces que vas hacer a tus formularios y no van a cambiar o si cambia es poco). O dinámico que puede ser de una base de datos de un archivo xml o alguna otra fuente.
Para la primera desde el modo diseño lo puedes realizar.
1.- Seleccionas tu treeview y te vas a las propiedades y buscas la propiedad "nodes" haces click en el botón con los 3 puntos (...).
2.- En la ventana que sale en la parte izquierda esta "Nodes:" aquí podrás agregar los nodos que quieras el primer botón(izquierda a derecha) es para nodos padres y el segundo para nodos hijos.
3.- En la parte derecha de la ventana están las propiedades selecciona el nodo que quieres cambiar propiedades las más usadas o comunes son NavigateUrl y Text ya podrás probar las demás propiedades y ver su comportamiento.
4.- En NavigateUrl le indicas que formulario deseas que abra (aquí te abre una ventana con los formularios dentro de tu proyecto. Selecciona el que deseas) y click en ok.
5.- Text es el texto que mostrara el nodo en el TreeView que sera el mismo valor de Value.
Y repites estos pasos para todos los nodos que necesites.
Y para cargarlo dinámicamente es otra historia pero te mando unos links donde te explican esto.
http://www.elguille.info/colabora/NET2005/bnlbnl_visorXML.htm
http://www.codeproject.com/KB/tree/dbTree.aspx
http://aspalliance.com/671
http://msdn.microsoft.com/es-us/library/system.web.ui.webcontrols.treeview.aspx
http://www.dreamincode.net/code/snippet922.htm
Cordial Saludo: Gracias que todo por su pronta respuesta. El TreeView es estático, es decir no van a cambiar los nodos, la función para la cual diseño el TreeView es unicamente para que un usuario de click en el nodo y este a su vez lo envíe a un formulario, Ejm. Nodo Padre: Archivo, al dar click abre a los nodos hijos como Barrio, Ciudad, etc. "que son formularios que previamente he creado", y al dar click en un Nodo hijo como barrio este me ubique en el formulario respectivo. No se si me explique bien... Por otra parte lo estoy desarrollando con V.S. 2008 express y mi base es en mssql server 2005 express. Las propiedades de los Nodos NavigateUrl y Text no me aparecen dentro de las propiedades de los Nodos. Gracias por su atención.
Disculpe la tardanza. Pero parece que la ultima respuesta que le envíe no se mando.
Vamos a intentar de otra forma, en la página donde tenga su tree view váyase a modo de diseño, seleccione el control treeview en la esquina superior derecha del control(treeview) le aparecerá un trinagulito, haga click ahí y le aparecerá un menu con varias opciones, aquí seleccione la opción de editar nodos (edit nodes), le aparecerá la ventana que anteriormente le comente, en la parte superior izquierda de la ventana est un botón para agregar nodos padre, y el que esta a la derecha de este botón agrega nodos hijos al nodo que este seleccionado.
Al seleccionar un nodo, en la parte derecha de la ventana (tree node editor) aparecerán las propiedades del nodo, aquí busca las propiedades text y NavigateUrl.
Ya con esto no tendrá que escribir código, quedara configurado para hacer lo que usted desea.
Cordial Saludo: Las propiedades del TreeView ya las he estudiado de igual forma las propiedades de los nodos. La propiedad text que me aparece en la parte derecha de la pantalla es para darle el nombre al nodo que uno desea que aparezca en la pantalla del formulario. Pero la propiedad de NavigateUrl en la ventana de propiedades del nodo no me aparece, tal vez sea porque tengo la version Express. Debido a lo antes mencionado me toca programar cada uno de los nodos pero la verdad no se como hacerlo ya que he intentado por varias formas pero no me arroja ningún resultado. Lo único que deseo es que al hacer clic en el nodo barrio este a su vez me abra un formulario que previamente he creado, y así sucesivamente. Gracias por su colaboración.
No creo que sea por la version Express no tenga esa propiedad, yo también desarrollo con WebDevelepor 2008 Express y si trae esa propiedad. Habrá que checar eso.
Vamos a crear llenar el treeview desde código, le mando un ejemplo sencillo para llenarlo desde code behind.
protected void Page_Load(object sender, EventArgs e)
{
//se limpia el treeview
TreeView1.Nodes.Clear();
//se crea nodo padre
TreeView1.Nodes.Add(new TreeNode("Padre","Padre"));
//se agrega hijo a nodo padre
TreeView1.Nodes[0].ChildNodes.Add(new TreeNode("hijo1", "hijo1", "imagen", "~/Form1.aspx", ""));
//se crea nodo padre2
TreeView1.Nodes.Add(new TreeNode("Padre2", "Padre2"));
//se agrega nodo a padre 2
TreeView1.Nodes[1].ChildNodes.Add(new TreeNode("hijo2", "hijo2", "imagen", "~/Form2.aspx", ""));
}
Cordial Saludo:
Ese es el ejemplo es el que yo trataba de explicarle, pero el código que me ha enviado esta en ASP.net yo estoy realizando la aplicación en Microsoft Visual Basic 2008 le agradecería que me lo enviara en en este mismo lenguaje. Y no en Visual Basic 6.0 ya que es muy diferente. Gracias por su colaboración.
Ok un pequeño detalle de especificaciones. Usted esta trabajando con windows form lo cual lo hace dirente por eso no coincidían las propiedades.
Ponga el siguiente código en el load de su forma
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'se limpia el treeview
TreeView1.Nodes.Clear()
'se crea nodo padre
TreeView1.Nodes.Add("Padre")
'se agrega hijo a nodo padre
Dim Nodo As New TreeNode("Hijo")
TreeView1.Nodes(0).Nodes.Add(Nodo)
TreeView1.Nodes.Add("Padre2")
Dim Nodo2 As New TreeNode("Hijo2")
TreeView1.Nodes(1).Nodes.Add(Nodo2)
End Sub
y para abrir el form correspondiente:
Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect
'se obtiene el texto del nodo que se hizo click
Select Case e.Node.Text
Case "Hijo"
'si es "Hijo" se habre la forma que quiere para hijo
Dim Forma1 As New Form1
Forma1.Show()
'si es Hijo2" se habre la forma que quiere para hijo2 y asi para cada nodo.
Case "Hijo2"
Dim forma2 As New Form2
forma2.ShowDialog()
End Select
End Sub
Es un pequeño ejemplo pero creo con esto ya podrá armar su tree view como lo desea.
El código que le mande anteriormente es para aplicación web y esta en C#.
Excelente respuesta. Le quedo infinitamente agradecido. Espero que este foro le sirva a las demás personas que como yo teníamos la misma duda. :-). Lo único que me queda es agregarle imágenes y listo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas