Me he creado un treeview en visual Basic y quisiera saber que tengo que hacer para que una vez desplegado y pinchando sobre alguna carpeta del treeview me abra un formulario de visual basic. Me gustaría que me lo explicaras lo más claro posible ya que soy nuevo en el visual Basic.
Al pinchar una carpeta del Treeview se activa el evento NodeClick. Luego tienes que abrir el formulario en ese evento. Por ejemplo. Private Sub TreeView1_NodeClick(ByVal Node As ComctlLib.Node) MIFormulario.Show End Sub ¿No necesitas saber en cual de las carpetas te han pinchado? Si es así, tendrás la clave de la carpeta pinchada en Node. Key y el nombre de esa carpeta en Node.Text Suerte :-)
Podías ser un poco más claro cunado te refieres al Node.Key y al Node.Text Lo he estado mirando y no veo nada. Ahora lo que he conseguido es que pinche donde pinche en el Treeview siempre me abre el mismo formulario. Gracias
No me habías dicho que querías abrir un formulario DISTINTO cada vez que pulsas el Treeview. Aunque me extrañaba y por eso te apuntaba el tema de Node. Key y Node.Text. Te lo explico: cuando tu generas el Treeview, utilizas el método ADD sobre la colección Nodes. Esto es: utilizas sentencias del tipo: Set NodeX = TreeView1.Nodes.Add("Raiz", 4, "R1", "Albumes", 1, 2) En este ejemplo "R1" es la clave que asignamos a este nodo, y "Albumes" es el texto que asignamos a este Nodo. Además estamos diciendo que este nodo es un hijo (4) del nodo cuya clave es "Raiz". Cuando el treeview se visualiza, aparecerá en el árbol el texto asignado es decir en este ejemplo "Albumes" Si tu quieres que cuando pinchas en un determinado nodo se abra un formulario determinado, tendrás de alguna forma que identificar cada formulario con su nodo correspondiente. No me dices como quieres hacer esto. Habría muchas formas de hacerlo. Se me ocurre que cuando no dices nada, estás suponiendo que los nombres que aparecen en el árbol, son precisamente los nombres de los formularios, es decir, que cuando tu has ido leenando el trevieww con las sentencias ADD, en el texto donde yo ponía "Albumes" as ido poniendo los nombres de los formmularios por ejemplo Form1 Form2... etc. ¿Es así? Si es así la propiedad Text del formulario contiene precisamente el nombre del formulario a abrir, luego lo que tendrías que hacer en el evento Node Click sería algo como esto: Private Sub TreeView1_NodeClick(ByVal Node As ComctlLib.Node) Node.text.Show End Sub Y ahora un consejo: Si es esto lo que estás haciendo no es un buena práctica de programación. Los textos del Treeview son una información para el usuario que deben tener por lo tanto un contenido fácil de entender. Hacer coincidir esto con el nombre de un formulario que es un parámetro del programa que involucra muchas cosas es muy malo. Imaginate que cuándo esté todo hecho al usuario no le gusta el texto del treeview y te pide cambiarlo. O que se decide tradicir la aplicación al inglés. ¿Qué vas a hacer? ¿Cambiar todos los nombres de los formularios y todas las referencias a los mismos en toda la aplicación? Sería un problema. Como mínimo los nombres de los formularios deberían ser las claves del Treeview. Estas claves no se ven, pero cuando necesites mostrar el formulario harías: NODE.key.Show Esto tye da libertad para poner en el Treeview el texto que quieras, incluso con varias palabras y modificarlo cuantas veces se necesite sin afectar para nada el programa
- Anónimoahora mismo
Añade tu respuesta
Haz clic para
o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.