Diseñador de formularios.

23/10/2007 - 20:03 por Jose Antonio | Informe spam
Hola a todos:

Estoy haciendo practicas con un Add-In de Visual Studio 2005, y en su metodo
Exec intento recorrer la coleccion de controles de el formulario activo
abierto en Visual Studio.

System.ComponentModel.Design.IDesignerHost dg =
_applicationObject.ActiveWindow.Object as
System.ComponentModel.Design.IDesignerHost;

Hasta aqui correcto en dg.Container.Components tengo toda la coleccion de
los controles del formulario.

foreach ( System.ComponentModel.IComponent c in dg.Container.Components)
{
if (c is ListBox) // Instrucciones de este tipo no me funcionan.
}

Recorriendo la coleccion en debug yo veo que cada uno de los componentes
corresponde a un TextBox, ListBox, ComboBox, etc.
pero no consigo acceder a las propiedades de cada uno de ellos porque no me
deja tiparlos a la manera (c as TextBox).Text, etc.

¿Es posible recorrer esta colección, sabiendo cada elemento que tipo de
control es y accediendo e incluso modificando sus propiedades?

Saludos.
 

Leer las respuestas

#1 Guillermo guille
23/10/2007 - 20:40 | Informe spam
Intenta usar la colección Controls de cada objeto que a su vez contenga
algo, de esa forma podrás usar un tipo Control como elemento del foreach y
así poder hacer el cast sin problemas.

Puedes hacerlo de forma recursiva, ya que todos los controles tienen esa
colección Controls que unos estará vacia y otros tendrán los controles que
contenga.

Nos vemos
Guillermo

Microsoft MVP Visual Basic desde 1997
Tus consultas en los foros del Guille: http://foros.elguille.info/


"Jose Antonio" wrote in message
news:
Hola a todos:

Estoy haciendo practicas con un Add-In de Visual Studio 2005, y en su
metodo Exec intento recorrer la coleccion de controles de el formulario
activo abierto en Visual Studio.

System.ComponentModel.Design.IDesignerHost dg =
_applicationObject.ActiveWindow.Object as
System.ComponentModel.Design.IDesignerHost;

Hasta aqui correcto en dg.Container.Components tengo toda la coleccion de
los controles del formulario.

foreach ( System.ComponentModel.IComponent c in dg.Container.Components)
{
if (c is ListBox) // Instrucciones de este tipo no me funcionan.
}

Recorriendo la coleccion en debug yo veo que cada uno de los componentes
corresponde a un TextBox, ListBox, ComboBox, etc.
pero no consigo acceder a las propiedades de cada uno de ellos porque no
me deja tiparlos a la manera (c as TextBox).Text, etc.

¿Es posible recorrer esta colección, sabiendo cada elemento que tipo de
control es y accediendo e incluso modificando sus propiedades?

Saludos.

Preguntas similares