System.Reflection

11/08/2004 - 20:50 por Jose Antonio | Informe spam
Tengo un formulario con un control TextBox y quiero acceder a las
propiedades del TextBox por medio de Reflection.



Type t=Formulario.GetType();

System.Reflection.FieldInfo m=t.GetField("textBox1");

System.Reflection.PropertyInfo p=m.FieldType.GetProperty("Text");

// Hasta aqui todo bien m tienen la informacón correcta y p tambien

Al intentar coger el valor de la propiedad Text de textBox1 me salta una
excepcion de TargerException

object o=p.GetValue(m.FieldType,null),

tambien he probado con

object o=p.GetValue(t,null);

¿Alguna sugerencia?



Saludos y gracias.

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
11/08/2004 - 23:27 | Informe spam
JA,

El problema es que en la última llamada el primer parámetro tiene que ser el
objeto TextBox en sí, no su tipo ni ninguna otra cosa.
Mira a ver si te vale esto, que funciona OK:
Type t= this.GetType();

System.Reflection.FieldInfo m = t.GetField("textBox1");

System.Reflection.PropertyInfo p = m.FieldType.GetProperty("Text");

TextBox tb = (TextBox) this.Controls.Find("textBox1", true)[0];

string s = (string) p.GetValue(tb, null);

MessageBox.Show(s);

He utilizado 'this' en lugar de tu variable 'Formulario', por lo demás es lo
mismo.

Salu2 - Octavio

****************************************************************************
********************
"Jose Antonio" escribió en el mensaje
news:
Tengo un formulario con un control TextBox y quiero acceder a las
propiedades del TextBox por medio de Reflection.



Type t=Formulario.GetType();

System.Reflection.FieldInfo m=t.GetField("textBox1");

System.Reflection.PropertyInfo p=m.FieldType.GetProperty("Text");

// Hasta aqui todo bien m tienen la informacón correcta y p tambien

Al intentar coger el valor de la propiedad Text de textBox1 me salta una
excepcion de TargerException

object o=p.GetValue(m.FieldType,null),

tambien he probado con

object o=p.GetValue(t,null);

¿Alguna sugerencia?



Saludos y gracias.


Respuesta Responder a este mensaje
#2 Jose Antonio
12/08/2004 - 09:02 | Informe spam
Hola Octavio.

El problema que tengo es que yo se como se llama el control ("textBox1")
pero no se que es un Textbox u otro tipo, confiaba que con la reflection al
recoger en m su información podría coger los valores de sus propiedades, que
son comunes a todos los controles, pero me da la impresion de que no se
puede hacer.

¿Es asi?

Saludos.

"Octavio Hernandez" escribió en el mensaje
news:Om5VJo%
JA,

El problema es que en la última llamada el primer parámetro tiene que ser


el
objeto TextBox en sí, no su tipo ni ninguna otra cosa.
Mira a ver si te vale esto, que funciona OK:
Type t= this.GetType();

System.Reflection.FieldInfo m = t.GetField("textBox1");

System.Reflection.PropertyInfo p = m.FieldType.GetProperty("Text");

TextBox tb = (TextBox) this.Controls.Find("textBox1", true)[0];

string s = (string) p.GetValue(tb, null);

MessageBox.Show(s);

He utilizado 'this' en lugar de tu variable 'Formulario', por lo demás es


lo
mismo.

Salu2 - Octavio




****************************************************************************
********************
"Jose Antonio" escribió en el mensaje
news:
> Tengo un formulario con un control TextBox y quiero acceder a las
> propiedades del TextBox por medio de Reflection.
>
>
>
> Type t=Formulario.GetType();
>
> System.Reflection.FieldInfo m=t.GetField("textBox1");
>
> System.Reflection.PropertyInfo p=m.FieldType.GetProperty("Text");
>
> // Hasta aqui todo bien m tienen la informacón correcta y p tambien
>
> Al intentar coger el valor de la propiedad Text de textBox1 me salta una
> excepcion de TargerException
>
> object o=p.GetValue(m.FieldType,null),
>
> tambien he probado con
>
> object o=p.GetValue(t,null);
>
> ¿Alguna sugerencia?
>
>
>
> Saludos y gracias.
>
>


Respuesta Responder a este mensaje
#3 Rodrigo Corral [MVP]
12/08/2004 - 09:17 | Informe spam
El codigo del amigo Octavio sirve perfectamente a tus propositos,
simplemente sustituye

TextBox tb = (TextBox) this.Controls.Find("textBox1", true)[0];

por

object tb = this.Controls.Find("textBox1", true)[0];


Un saludo
Rodrigo Corral González [MVP]

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#4 Jose Antonio
12/08/2004 - 13:05 | Informe spam
Cierto, gracias a los dos.

Saludos
"Rodrigo Corral [MVP]" escribió en el mensaje
news:
El codigo del amigo Octavio sirve perfectamente a tus propositos,
simplemente sustituye

TextBox tb = (TextBox) this.Controls.Find("textBox1", true)[0];

por

object tb = this.Controls.Find("textBox1", true)[0];


Un saludo
Rodrigo Corral González [MVP]

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net


Respuesta Responder a este mensaje
#5 Jose Antonio
12/08/2004 - 18:34 | Informe spam
TextBox tb = (TextBox) this.Controls.Find("textBox1", true)[0];

esta linea me da error
'System.Windows.Forms.Control.ControlCollection' no contiene una definición
para 'Find'
¿ahi que añadir alguna referencia?



"Jose Antonio" escribió en el mensaje
news:%
Cierto, gracias a los dos.

Saludos
"Rodrigo Corral [MVP]" escribió en el mensaje
news:
> El codigo del amigo Octavio sirve perfectamente a tus propositos,
> simplemente sustituye
>
> TextBox tb = (TextBox) this.Controls.Find("textBox1", true)[0];
>
> por
>
> object tb = this.Controls.Find("textBox1", true)[0];
>
>
> Un saludo
> Rodrigo Corral González [MVP]
>
> microsoft.public.es.vc FAQ
> http://vcfaq.europe.webmatrixhosting.net
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida