Reflexión y referenciar un control

06/06/2005 - 11:16 por JuanilloFox | Informe spam
Hola grupo,

Me han comentado que debo usar la reflexión para poder hacer referencia a un
control en tiempo de ejecución y acceder a sus propiedades para
introducirles valores o cambiar su estado...

La verdad es que no se como utilizarlo. Si alguien puede aportarme algo de
luz


Un saludo

juanillofox@andujar.com

Preguntas similare

Leer las respuestas

#1 Víctor
06/06/2005 - 13:00 | Informe spam
¿Te refieres a un control dentro de un formulario contenido en un ensamblado
diferente del ensamblado del ejecutable? Si no es así, es suficiente con que
accedas mediante "this.InstanciaControl.propiedad".

Víctor.

"JuanilloFox" escribió en el mensaje
news:Od$
Hola grupo,

Me han comentado que debo usar la reflexión para poder hacer referencia a


un
control en tiempo de ejecución y acceder a sus propiedades para
introducirles valores o cambiar su estado...

La verdad es que no se como utilizarlo. Si alguien puede aportarme algo de
luz


Un saludo




Respuesta Responder a este mensaje
#2 JuanilloFox
06/06/2005 - 13:57 | Informe spam
Hola Víctor,

El tema es un poco complejo. En un mensaje anterior expuse que tengo una
matriz extensa de controles (TextBox, Label) y tengo que hacer referencia a
ellos para introducirles valores en su propiedad Text y utilizar la
propiedad Enableb y Visible dependiendo de algunos factores.

El problema es, que hacer referencia a cada control directamente
"this.miControl.Text" resulta my engorroso y a la vez tedioso ya que es
bastante extenso (matriz de controles de 17x16).


Un saludo


Respuesta Responder a este mensaje
#3 Joan Ibáñez
06/06/2005 - 14:24 | Informe spam
Este ejemplo es en vb.net:

# Asignar valor a una propiedad del objeto:

Dim Tipo As Type
Dim Propiedad As System.Reflection.PropertyInfo

Tipo = Ctrl.GetType

Propiedad = Tipo.GetProperty(NombrePropiedad)

If Not Propiedad Is Nothing Then
Propiedad.SetValue(Ctrl, Valor, Nothing)
End If


# Obtener el valor de una propiedad del objeto:

Dim Tipo As Type
Dim Propiedad As System.Reflection.PropertyInfo
Dim Valor As String = ""

Tipo = TextBox1.GetType

Propiedad = Tipo.GetProperty("Text")

If Not Propiedad Is Nothing Then
Valor = Propiedad.GetValue(TextBox1, Nothing)

MessageBox.Show(Valor)
End If




Espero haberte ayudado.


Saludos,
Joan


"JuanilloFox" escribió en el mensaje
news:
Hola Víctor,

El tema es un poco complejo. En un mensaje anterior expuse que tengo una
matriz extensa de controles (TextBox, Label) y tengo que hacer referencia


a
ellos para introducirles valores en su propiedad Text y utilizar la
propiedad Enableb y Visible dependiendo de algunos factores.

El problema es, que hacer referencia a cada control directamente
"this.miControl.Text" resulta my engorroso y a la vez tedioso ya que es
bastante extenso (matriz de controles de 17x16).


Un saludo






Respuesta Responder a este mensaje
#4 Víctor
06/06/2005 - 16:25 | Informe spam
¿Puedes poner un ejemplo concreto de alguno de los casos? Creo que respondí
a un mensaje anterior tuyo y por la descripción que das, la solución que te
di anteriormente me parece válida.

Víctor.

"JuanilloFox" escribió en el mensaje
news:
Hola Víctor,

El tema es un poco complejo. En un mensaje anterior expuse que tengo una
matriz extensa de controles (TextBox, Label) y tengo que hacer referencia


a
ellos para introducirles valores en su propiedad Text y utilizar la
propiedad Enableb y Visible dependiendo de algunos factores.

El problema es, que hacer referencia a cada control directamente
"this.miControl.Text" resulta my engorroso y a la vez tedioso ya que es
bastante extenso (matriz de controles de 17x16).


Un saludo






Respuesta Responder a este mensaje
#5 Octavio Hernandez
06/06/2005 - 19:06 | Informe spam
Juanillo,

En principio si no son de muchas clases distintas, podrías hacer algo como
esto:

// supongamos que el array es Controles[,]
for (int i = 0; i < 17; i++)
for (j = 0; j < 16; j++)
switch (Controles[i, j].GetType().Name)
{
case "TextBox":
// es un TextBox
TextBox t = Controles[i, j] as TextBox;
t.Text = "TEXTBOX";
// ...
break;
case "Label":
// es un Label
Label l = Controles[i, j] as Label;
l.Text = "LABEL";
// ...
break;
// otros tipos de controles...
}

Salu2,

Octavio

"JuanilloFox" escribió en el mensaje
news:
Hola Víctor,

El tema es un poco complejo. En un mensaje anterior expuse que tengo una
matriz extensa de controles (TextBox, Label) y tengo que hacer referencia
a
ellos para introducirles valores en su propiedad Text y utilizar la
propiedad Enableb y Visible dependiendo de algunos factores.

El problema es, que hacer referencia a cada control directamente
"this.miControl.Text" resulta my engorroso y a la vez tedioso ya que es
bastante extenso (matriz de controles de 17x16).


Un saludo






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