como utilizar el valos de un string como nombre de un objeto????

19/01/2004 - 15:31 por David Porqueras Araque | Informe spam
Hola


Alguien me puede explicar como puedo utilizar el valor de un string como
nombre de un objeto.

Por ej.

Supongamos que tengo un formulario con un Texbox que se llama IdNombre

y quiero cambiarle la propiedad Text

para ello utilizo un string que almacena el nombre del objeto string
sName="IdNombre";

y ahora lo que quiero es modificar la propiedad Text this.sName.Text="hola";

en fox se hace utilizando el operador & ósea
Thisform.&sName..Caption="hola"

Gracias

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral González
19/01/2004 - 16:50 | Informe spam
A través de la colección Controls del formulario.
Por ejemplo:

((TextBox)(this.Controls["nombreControl"])).Text = "texto";

Rodrigo Corral González

microsoft.public.es.vc FAQ
http://vcfaq.europe.webmatrixhosting.net
Respuesta Responder a este mensaje
#2 Juan Ramon Martinez
19/01/2004 - 17:10 | Informe spam
Si, eso funciona para los controles de un formulario.

Si lo que quieres es establecer el valor de una propiedad de un objeto
cualquiera, NET te ofrece Reflection.

puedes hacer algo como.

PropertyInfo pInfo=this.GetType().GetProperty("sName");
pInfo.SetProperty(this,"nuevoValor",null);

Para mas información ve el namespace System.Reflection

Espero esto te ayude

JR

"Rodrigo Corral González" escribió en el mensaje
news:
A través de la colección Controls del formulario.
Por ejemplo:

((TextBox)(this.Controls["nombreControl"])).Text = "texto";

Rodrigo Corral González

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


Respuesta Responder a este mensaje
#3 David Porqueras Araque
19/01/2004 - 17:37 | Informe spam
((TextBox)(this.Controls["nombreControl"])).Text = "texto";


pues asi no me funciona en el indizador me pide un Entero no un string :(
Respuesta Responder a este mensaje
#4 Tristan
19/01/2004 - 19:46 | Informe spam
Pues me temo que tampoco así sería posible. Reflection
proporciona métodos para obtener información de tipos,
etc... pero o mucho me equivoco, o no ofrece nada para
encontrar una instancia existente de un tipo, tal como
David necesita.

Puesto que lamentablemente tampoco hay nada en winforms
(a diferencia de webforms) que permita encontrar un
control por su nombre, puedes hacer dos cosas:

- Recorrer secuencialmente la colección de controles.
Imagino que esto no tendrá ninguna dificultad.

- Gestionar tu propia estructura de indices, llevando una
referencia de ltus controles en un Hashtable. De esta
forma accederás al control por índice. Sería algo así:


Hashtable controles = new Hashtable();


En el load del form, por ej, deberás llenar la colección:

foreach (Control control in this.Controls)
controles.Add(control.Name, control);


Y por último, para acceder a un control por su nombre:

Control control = (Control) controles["nombreTextBox"];
Respuesta Responder a este mensaje
#5 Juan Ramon Martinez
19/01/2004 - 21:10 | Informe spam
Hola

De hecho Reflection si te permite acceder por nombre a los controles de una
forma.Los controles no son más que campos del objeto forma que los contiene,
por lo cual si son accesibles vía reflection. Probablemente lo único que
haya que hacer es ver si los modificadores de acceso no representan un
problema; en cuyo caso bastaría con cambiarlos a public.

Saludos
JR


"Tristan" escribió en el mensaje
news:09c801c3debc$8d3f7530$
Pues me temo que tampoco así sería posible. Reflection
proporciona métodos para obtener información de tipos,
etc... pero o mucho me equivoco, o no ofrece nada para
encontrar una instancia existente de un tipo, tal como
David necesita.

Puesto que lamentablemente tampoco hay nada en winforms
(a diferencia de webforms) que permita encontrar un
control por su nombre, puedes hacer dos cosas:

- Recorrer secuencialmente la colección de controles.
Imagino que esto no tendrá ninguna dificultad.

- Gestionar tu propia estructura de indices, llevando una
referencia de ltus controles en un Hashtable. De esta
forma accederás al control por índice. Sería algo así:


Hashtable controles = new Hashtable();


En el load del form, por ej, deberás llenar la colección:

foreach (Control control in this.Controls)
controles.Add(control.Name, control);


Y por último, para acceder a un control por su nombre:

Control control = (Control) controles["nombreTextBox"];
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida