Iniciar sesión

Ver la versión completa : Ayuda con Visual Basic .NET - Creando controles de usuario...



neostalker
15/04/2008, 16:48
Hola!

Estoy haciendo un programa con Visual Basic 2008 Express Edition y he creado varios controles de usuario (básicamente son paneles con unos controles dentro y poco más) que quiero utilizar. Sé generarlos y usarlos en mi proyecto arrastrándolos desde la lista de controles, pero no sé cómo se pueden generar y mostrar desde código.

Lo que quiero hacer es que al pinchar en un treenode determinado (tengo un treview con varios treenodes) me muestre uno u otro panel, en función del que necesite, pero sin tener que "pintarlos" en el diseño y ocultar todos menos el que necesito.

Alguien me echa una mano?

nandove
15/04/2008, 17:02
Hola!

Estoy haciendo un programa con Visual Basic 2008 Express Edition y he creado varios controles de usuario (básicamente son paneles con unos controles dentro y poco más) que quiero utilizar. Sé generarlos y usarlos en mi proyecto arrastrándolos desde la lista de controles, pero no sé cómo se pueden generar y mostrar desde código.

Lo que quiero hacer es que al pinchar en un treenode determinado (tengo un treview con varios treenodes) me muestre uno u otro panel, en función del que necesite, pero sin tener que "pintarlos" en el diseño y ocultar todos menos el que necesito.

Alguien me echa una mano?

Tio, lo que estas pidiendo es generar controles dinamicamente, y creeme que SON N COÑAZO mil veces mayor que crearte 5 paneles y esconder 4 para mostrar solamente 1.

Si no te es mucho engorro, trabaja mejor con TABS(pestañas) que te hacen ellas solas todo el codigo de esconder paneles

Malenko
15/04/2008, 17:09
Tampoco es pa tanto.

Has de crear un panel donde añadiras los controles dinámicos.

Para crear un control dinámico solo tienes que crear una variable del tipo que sea el objeto (por ejemplo 'Button' o 'TextBox'), e inicializarlo con un New Button() (o un new lo_que_sea). Luego es añadirle los valores a las propiedades de altura, ancho, texto, hacerlo visible y añadirlo al panel (panel.Add(botoncillo)).

Esta muy a groso modo, pero no es muy complicado. Te recomiendo que le des un vistazo a www.codeproject.com :)

neostalker
15/04/2008, 17:34
Tio, lo que estas pidiendo es generar controles dinamicamente, y creeme que SON N COÑAZO mil veces mayor que crearte 5 paneles y esconder 4 para mostrar solamente 1.

Si no te es mucho engorro, trabaja mejor con TABS(pestañas) que te hacen ellas solas todo el codigo de esconder paneles

Sí, ya he trabajado con pestañas en otras ocasiones, pero el problema es que tengo que manejar también una base de datos (por eso cada panel no puede tener los mismos controles dentro, etc) y con las pestañas llega un momento en que suele tardar bastante en cambiar de una a otra (sobre todo si cada vez que cambias de pestaña tienes que hacer las consultas a la base de datos y cargar no sé cuantos controles :p)

< - >

Tampoco es pa tanto.

Has de crear un panel donde añadiras los controles dinámicos.

Para crear un control dinámico solo tienes que crear una variable del tipo que sea el objeto (por ejemplo 'Button' o 'TextBox'), e inicializarlo con un New Button() (o un new lo_que_sea). Luego es añadirle los valores a las propiedades de altura, ancho, texto, hacerlo visible y añadirlo al panel (panel.Add(botoncillo)).

Esta muy a groso modo, pero no es muy complicado. Te recomiendo que le des un vistazo a www.codeproject.com :)
Muchas gracias, tu post me ha dado una idea y ya he conseguido lo que quiero ^^

He usado un código similar a este:


Dim panel as New panelPersonalizado
dim coorPanel as New Point(218, 40) 'importando previamente system.drawing
panel.location=coorPanel
me.controls.add(panel)

nandove
15/04/2008, 17:44
el problema de crear dinamicamente los controles es tener que posicionarlos por codigo...[propeller] una tortura

Malenko
15/04/2008, 17:49
Muy bien Neo, era eso exactamente lo que tenias que hacer. De hecho, es como se creaban las IU en java antiguamente, ahora ya hay pijadas para hacerlas mediante drag&drop.

neostalker
15/04/2008, 20:47
el problema de crear dinamicamente los controles es tener que posicionarlos por codigo...[propeller] una tortura

Hombre, si lo haces con muchos controles sí, seguro que es un mojón, pero vamos, es un panel personalizado del mismo tamaño y en la misma posición que un panel normal que tenía colocado antes. Lo único que he hecho ha sido guardar esas coordenadas y asignárselas al panel personalizado. Los controles del panel personalizado ya van colocados en el modo diseño del propio control :)

< - >
Bueno, parece que el programita va avanzando y ya tengo casi todos los men&#250;s listos. Una vez lo tenga todo listo empezar&#233; con las operaciones de lectura/escritura/edici&#243;n de la base de datos.

Si quereis hacer alguno de betatester tampoco me viene mal ^^ (aunque eso cuando ya tenga un programa que permita hacer nuevos registros, editar los existentes o borrarlos)

Topochan
15/04/2008, 20:56
winforms son un mojon, estoy ahora haciendo un app en .net y me muero del asco... si un día podeis usar gtk y libglade y vereis lo que es comodidad a la hora de trabajar dinamicamente...

Consejo:
Tambien puedes crearte otro form con los paneles ya hechos y solo tienes que cogerlos y copiarlos al tuyo (con el constructor de copia mismo). Si este tiene componentes lo mejor es cambiar el padre y poco más...