Contenedor controles de usuario

19/04/2006 - 00:47 por Javier Càceres | Informe spam
Hola

Tengo un control de usuario en una aplicación Windows que consiste en un
textbox y un label; necesito crear dinámicamente varios de estos controles y
agregarlos a un contenedor; antes lo habia hecho con un tab page control
agregandoles pages dinámicamente y funciona Ok; con este control
personalizado que hice lo trate de agregar a un listbox pero solo se puede
observar el primero que agregue y los otros no se ven, a pesar que si reviso
la colección de items del listbox allí aparece; he probado con un control
container genérico y pasa lo mismo, solo se ve el primero, los otros no.
Saben de algún contenedor que me permita agregar y mostrar mis controles de
usuario?

Saludos desde Colombia!
Javier

Preguntas similare

Leer las respuestas

#1 Jesús López
19/04/2006 - 18:19 | Informe spam
En un panel normal y corriente debería funcionar. Pero aségurate de no
ponerlos todos en el mismo sitio ya que así parece que sólo hay un control.

Por otra parte no estaría de más que nos mostraras el código que usas para
crear esos controles y añadirlos al contenerdor. Porque así, sin ver el
código, sólo podemos hacer conjeturas, sin embargo si pones el código
podríamos encontrar el defecto.

Saludos:

Jesús López



"Javier Càceres" escribió en el
mensaje news:
Hola

Tengo un control de usuario en una aplicación Windows que consiste en un
textbox y un label; necesito crear dinámicamente varios de estos controles
y
agregarlos a un contenedor; antes lo habia hecho con un tab page control
agregandoles pages dinámicamente y funciona Ok; con este control
personalizado que hice lo trate de agregar a un listbox pero solo se puede
observar el primero que agregue y los otros no se ven, a pesar que si
reviso
la colección de items del listbox allí aparece; he probado con un control
container genérico y pasa lo mismo, solo se ve el primero, los otros no.
Saben de algún contenedor que me permita agregar y mostrar mis controles
de
usuario?

Saludos desde Colombia!
Javier
Respuesta Responder a este mensaje
#2 Javier Càceres
19/04/2006 - 18:53 | Informe spam
Hola Jesus

Este es el código que los crea dinámicamente:
Básicamente recorro los nodos de un XML, tomo un par de atributos y los
seteo como propiedades del control de usuario ctrl; la pripiedad name la toma
el label y la paramvalue -que se puede editar- la toma el textbox.
lsbParams es un listbox

For Each nodeValue As XmlNode In xmlValueList
Dim ctrl As New ctrlParam
xmlAtt = nodeValue.Attributes("Name")
ctrl.Name = xmlAtt.Value
ctrl.ParamName = xmlAtt.Value
xmlAtt = nodeValue.Attributes("Value")
ctrl.ParamValue = xmlAtt.Value
lsbParams.Controls.Add(ctrl)
Next

Así lo he hecho, pero en vez de crear controles personalizados, he creado
tabpages y los agrego al tabpagecontrol (que los contiene) t odos se pueden
ver y modificar; pero con el código anterior solo se ve el primero y he
probado con listview y otros contenedores (tal vez se superponen como dices),
voy a volver a probar a ver si existe alguna forma de indicar la posición
dentro del contenedor.

Gracias

Saludos desde Colombia!
Javier
"Jesús López" wrote:

En un panel normal y corriente debería funcionar. Pero aségurate de no
ponerlos todos en el mismo sitio ya que así parece que sólo hay un control.

Por otra parte no estaría de más que nos mostraras el código que usas para
crear esos controles y añadirlos al contenerdor. Porque así, sin ver el
código, sólo podemos hacer conjeturas, sin embargo si pones el código
podríamos encontrar el defecto.

Saludos:

Jesús López



"Javier Càceres" escribió en el
mensaje news:
> Hola
>
> Tengo un control de usuario en una aplicación Windows que consiste en un
> textbox y un label; necesito crear dinámicamente varios de estos controles
> y
> agregarlos a un contenedor; antes lo habia hecho con un tab page control
> agregandoles pages dinámicamente y funciona Ok; con este control
> personalizado que hice lo trate de agregar a un listbox pero solo se puede
> observar el primero que agregue y los otros no se ven, a pesar que si
> reviso
> la colección de items del listbox allí aparece; he probado con un control
> container genérico y pasa lo mismo, solo se ve el primero, los otros no.
> Saben de algún contenedor que me permita agregar y mostrar mis controles
> de
> usuario?
>
> Saludos desde Colombia!
> Javier



Respuesta Responder a este mensaje
#3 Jesús López
19/04/2006 - 19:00 | Informe spam
Pues eso es lo que está pasando: los controles se superponen ya que no estás
estableciendo las propiedades de posición (se quedan en (0,0)). Por otra
parte también deberías establecer las propiedades de tamaño. Por ejemplo:

ctrl.Location = New Point(X, Y)
ctrl.Size = New Size(Width, Height)

Saludos:

Jesús López


"Javier Càceres" escribió en el
mensaje news:
Hola Jesus

Este es el código que los crea dinámicamente:
Básicamente recorro los nodos de un XML, tomo un par de atributos y los
seteo como propiedades del control de usuario ctrl; la pripiedad name la
toma
el label y la paramvalue -que se puede editar- la toma el textbox.
lsbParams es un listbox

For Each nodeValue As XmlNode In xmlValueList
Dim ctrl As New ctrlParam
xmlAtt = nodeValue.Attributes("Name")
ctrl.Name = xmlAtt.Value
ctrl.ParamName = xmlAtt.Value
xmlAtt = nodeValue.Attributes("Value")
ctrl.ParamValue = xmlAtt.Value
lsbParams.Controls.Add(ctrl)
Next

Así lo he hecho, pero en vez de crear controles personalizados, he creado
tabpages y los agrego al tabpagecontrol (que los contiene) t odos se
pueden
ver y modificar; pero con el código anterior solo se ve el primero y he
probado con listview y otros contenedores (tal vez se superponen como
dices),
voy a volver a probar a ver si existe alguna forma de indicar la posición
dentro del contenedor.

Gracias

Saludos desde Colombia!
Javier
"Jesús López" wrote:

En un panel normal y corriente debería funcionar. Pero aségurate de no
ponerlos todos en el mismo sitio ya que así parece que sólo hay un
control.

Por otra parte no estaría de más que nos mostraras el código que usas
para
crear esos controles y añadirlos al contenerdor. Porque así, sin ver el
código, sólo podemos hacer conjeturas, sin embargo si pones el código
podríamos encontrar el defecto.

Saludos:

Jesús López



"Javier Càceres" escribió en el
mensaje news:
> Hola
>
> Tengo un control de usuario en una aplicación Windows que consiste en
> un
> textbox y un label; necesito crear dinámicamente varios de estos
> controles
> y
> agregarlos a un contenedor; antes lo habia hecho con un tab page
> control
> agregandoles pages dinámicamente y funciona Ok; con este control
> personalizado que hice lo trate de agregar a un listbox pero solo se
> puede
> observar el primero que agregue y los otros no se ven, a pesar que si
> reviso
> la colección de items del listbox allí aparece; he probado con un
> control
> container genérico y pasa lo mismo, solo se ve el primero, los otros
> no.
> Saben de algún contenedor que me permita agregar y mostrar mis
> controles
> de
> usuario?
>
> Saludos desde Colombia!
> Javier



Respuesta Responder a este mensaje
#4 Jesús López
19/04/2006 - 19:05 | Informe spam
Por cierto, no uses un ListBox para contener los controles, los listbox no
están diseñados para contener otros controles, sólo para mostrar una lista.
Podrías usar un Panel o un GroupBox y establecer su propiedad AutoScroll =
True.

Saludos:

Jesús López




"Javier Càceres" escribió en el
mensaje news:
Hola Jesus

Este es el código que los crea dinámicamente:
Básicamente recorro los nodos de un XML, tomo un par de atributos y los
seteo como propiedades del control de usuario ctrl; la pripiedad name la
toma
el label y la paramvalue -que se puede editar- la toma el textbox.
lsbParams es un listbox

For Each nodeValue As XmlNode In xmlValueList
Dim ctrl As New ctrlParam
xmlAtt = nodeValue.Attributes("Name")
ctrl.Name = xmlAtt.Value
ctrl.ParamName = xmlAtt.Value
xmlAtt = nodeValue.Attributes("Value")
ctrl.ParamValue = xmlAtt.Value
lsbParams.Controls.Add(ctrl)
Next

Así lo he hecho, pero en vez de crear controles personalizados, he creado
tabpages y los agrego al tabpagecontrol (que los contiene) t odos se
pueden
ver y modificar; pero con el código anterior solo se ve el primero y he
probado con listview y otros contenedores (tal vez se superponen como
dices),
voy a volver a probar a ver si existe alguna forma de indicar la posición
dentro del contenedor.

Gracias

Saludos desde Colombia!
Javier
"Jesús López" wrote:

En un panel normal y corriente debería funcionar. Pero aségurate de no
ponerlos todos en el mismo sitio ya que así parece que sólo hay un
control.

Por otra parte no estaría de más que nos mostraras el código que usas
para
crear esos controles y añadirlos al contenerdor. Porque así, sin ver el
código, sólo podemos hacer conjeturas, sin embargo si pones el código
podríamos encontrar el defecto.

Saludos:

Jesús López



"Javier Càceres" escribió en el
mensaje news:
> Hola
>
> Tengo un control de usuario en una aplicación Windows que consiste en
> un
> textbox y un label; necesito crear dinámicamente varios de estos
> controles
> y
> agregarlos a un contenedor; antes lo habia hecho con un tab page
> control
> agregandoles pages dinámicamente y funciona Ok; con este control
> personalizado que hice lo trate de agregar a un listbox pero solo se
> puede
> observar el primero que agregue y los otros no se ven, a pesar que si
> reviso
> la colección de items del listbox allí aparece; he probado con un
> control
> container genérico y pasa lo mismo, solo se ve el primero, los otros
> no.
> Saben de algún contenedor que me permita agregar y mostrar mis
> controles
> de
> usuario?
>
> Saludos desde Colombia!
> Javier



Respuesta Responder a este mensaje
#5 Jesús López
19/04/2006 - 19:14 | Informe spam
Se me ocurre que podrías crear otro user control que actuara como contenedor
especializado de ese otro ctrlParam. Así, tu aplicación ganaría en
encapsulación y el formulario "anfitrión" quedaría más limpio y sencillo de
programar.

El nuevo user control podría tener propiedades y métodos para cargar los
datos, por ejemplo:

Public Sub LoadData( XmlNodeList Data )

Que creara los controles y estableciera sus valores.

También podría tener un método para obtener los datos:

Public Function GetData() As El tipo que mejor te venga (por ejemplo un
string con un fragmento XML)

Saludos:

Jesús López
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida