MetaC#: Acceso a los componentes de un formulario.

24/11/2005 - 17:18 por José Luis | Informe spam
Hola a todos.

Estoy intentando definir un fichero de configuración xml para, a partir
de él, modificar las propiedades de los objetos que se encuentren en 1
formulario. Esto ya lo he conseguido, pero mi gran sorpresa ha sido ver cómo
determinados controles no se añaden a la lista de controles del formulario,
que no heredan de System.ComponentModel.Component.Control, sino que
provienen de System.ComponentModel.Component...
He visto que el formulario tiene un atributo privado que es un
contenedor de componentes... vale. Soy capaz de recorrer este array y ver
todos los componentes que contiene, pero... ¿cómo sé el nombre que tiene
cada uno de los componentes del array?


Por ejemplo, estoy accediendo a un objeto Timer, de la siguiente manera:

int i =0;
System.ComponentModel.IComponent c = this.components.Components[i];

/* Esto no funciona:

string ctlname = "timerPeso";

System.ComponentModel.IComponent c = this.components.Components[ctlname];

*/

PropertyInfo pi = c.GetType().GetProperty("Interval");

pi.SetValue(c,Convert.ChangeType(Valor,pi.PropertyType),null);



El problema es que al acceder por nombre al array de componentes, el sistema
me devuelve null...

¿Cómo puedo acceder al nombre que le doy al componente al diseñar el
formulario????





Gracias
 

Leer las respuestas

#1 Fernando Callejon
25/11/2005 - 00:46 | Informe spam
Hacelo de la misma forma que le pones la propiedad, con reflection.

Suerte.
Fernando.-

"José Luis" escribió en el mensaje
news:
Hola a todos.

Estoy intentando definir un fichero de configuración xml para, a partir
de él, modificar las propiedades de los objetos que se encuentren en 1
formulario. Esto ya lo he conseguido, pero mi gran sorpresa ha sido ver
cómo determinados controles no se añaden a la lista de controles del
formulario, que no heredan de System.ComponentModel.Component.Control,
sino que provienen de System.ComponentModel.Component...
He visto que el formulario tiene un atributo privado que es un
contenedor de componentes... vale. Soy capaz de recorrer este array y ver
todos los componentes que contiene, pero... ¿cómo sé el nombre que tiene
cada uno de los componentes del array?


Por ejemplo, estoy accediendo a un objeto Timer, de la siguiente manera:

int i =0;
System.ComponentModel.IComponent c = this.components.Components[i];

/* Esto no funciona:

string ctlname = "timerPeso";

System.ComponentModel.IComponent c = this.components.Components[ctlname];

*/

PropertyInfo pi = c.GetType().GetProperty("Interval");

pi.SetValue(c,Convert.ChangeType(Valor,pi.PropertyType),null);



El problema es que al acceder por nombre al array de componentes, el
sistema me devuelve null...

¿Cómo puedo acceder al nombre que le doy al componente al diseñar el
formulario????





Gracias




Preguntas similares