ENCONTRAR UN CONTROL

18/07/2005 - 21:27 por Jose Fernandez | Informe spam
Hola.

tengo una serie de controles LABEL en un WinForm que se diferencian solo por
un numero.

Es decir,

L1, L2, L3

Yo necesito en un evento del boton, en dependencia de un numero, encontrar
el contro correspondiente.
Es decir, si el numero es el 17, cambiarle el color de fondo al Label L17

yo pense que seria algo asi como

Label tempLabel=(Label)this.Controls.IndexOf("L"+numero); pero no se puede
pues el parametro que pide IndexOf es un control en si.

Alguien que me pueda decir como hacer?
Otra cosa, como puedo hacer que un loop haya una pausa de 1 segundo cada vez
que "loopee"??

Saludos

Preguntas similare

Leer las respuestas

#1 Norberto Planchart
18/07/2005 - 21:51 | Informe spam
Hola,

Jose mira esta forma:
string nombre= "L"+textBox1.Text.Trim();
foreach( Control c in this.Controls)
{
if (c.Name==nombre)
{
c.BackColor = Color.Blue;
}
}



Pendiente con las mayusculas y minusculas !!!

Norberto Planchart, MCSD.Net
Caracas - Venezuela


"Jose Fernandez" wrote in message
news:
Hola.

tengo una serie de controles LABEL en un WinForm que se diferencian solo
por un numero.

Es decir,

L1, L2, L3

Yo necesito en un evento del boton, en dependencia de un numero, encontrar
el contro correspondiente.
Es decir, si el numero es el 17, cambiarle el color de fondo al Label L17

yo pense que seria algo asi como

Label tempLabel=(Label)this.Controls.IndexOf("L"+numero); pero no se puede
pues el parametro que pide IndexOf es un control en si.

Alguien que me pueda decir como hacer?
Otra cosa, como puedo hacer que un loop haya una pausa de 1 segundo cada
vez que "loopee"??

Saludos


Respuesta Responder a este mensaje
#2 Jose Fernandez
19/07/2005 - 00:46 | Informe spam
Algo curioso.
Ahi solo aparecen los controles que yo no modifique. Es decir, a los que
deje con el nombre por defecto que les dio VS

como hago para ver los que yo les cambie el Name??? sigo buscando y nada.
Alguien sabe como hacer?

saludos

"Norberto Planchart" escribió en el mensaje
news:
Hola,

Jose mira esta forma:
string nombre= "L"+textBox1.Text.Trim();
foreach( Control c in this.Controls)
{
if (c.Name==nombre)
{
c.BackColor = Color.Blue;
}
}



Pendiente con las mayusculas y minusculas !!!

Norberto Planchart, MCSD.Net
Caracas - Venezuela


"Jose Fernandez" wrote in message
news:
Hola.

tengo una serie de controles LABEL en un WinForm que se diferencian solo
por un numero.

Es decir,

L1, L2, L3

Yo necesito en un evento del boton, en dependencia de un numero,
encontrar el contro correspondiente.
Es decir, si el numero es el 17, cambiarle el color de fondo al Label L17

yo pense que seria algo asi como

Label tempLabel=(Label)this.Controls.IndexOf("L"+numero); pero no se
puede pues el parametro que pide IndexOf es un control en si.

Alguien que me pueda decir como hacer?
Otra cosa, como puedo hacer que un loop haya una pausa de 1 segundo cada
vez que "loopee"??

Saludos






Respuesta Responder a este mensaje
#3 Bruno Reato
19/07/2005 - 16:59 | Informe spam
Hola...
Disculpen mi ignorancia, soy nuevo en C# y no conozco mucho la estructura de
las clases, pero yo me pregunto, ¿No hay algún método que busque por nombre
y devuelva el control? Yo actualmente programo en Delphi y en este lenguaje
existe un método llamado FindComponent que devuelve el componente indicado
por un nombre. Lo que yo digo es que debe haber algún método más directo
para obtener un control a partir de un nombre, es básico y no creo que se
les haya escapado esto a los muchachos de microsoft. Me parece que no es la
solución más elegante utilizar un foreach para obtener un control por el
nombre, se necesita programar muchas líneas de código cuando se podría
solucionar con una, no sé que piensan ustedes.

Bruno.

"Norberto Planchart" escribió en el mensaje
news:eZvl%
Umm
A mi me muestra todos
Copia aqui el codigo y el nombre de tus controles (con detalle de mayuscula
y miniscula)
if (c.Name.ToUpper()==nombre.ToUpper()) //cambia eso a ver

Norberto Planchart, MCSD.Net
Caracas - Venezuela
Respuesta Responder a este mensaje
#4 Norberto Planchart
19/07/2005 - 17:37 | Informe spam
epale Bruno
:-)
mira en ASP.Net esta FindControl();
y se usa asi:

Label o;
o = (Label) FindControl("L1");
o.BackColor = Color.Blue;
FACIL!!!

En windows form de VS 2003 FrameWork 1.1 ha ha no se puede. (o al menos yo
no se ni lo veo)

Pero tranquilo que ya en VS 2005 framework 2.0 se puede hacer asi:
this.Controls.Find("L1", true);

this.Controls.Find("L1");

El segundo parámetro es que busque en sus hijos.


Norberto Planchart, MCSD.Net
Caracas - Venezuela


"Bruno Reato" wrote in message
news:
Hola...
Disculpen mi ignorancia, soy nuevo en C# y no conozco mucho la estructura
de
las clases, pero yo me pregunto, ¿No hay algún método que busque por
nombre
y devuelva el control? Yo actualmente programo en Delphi y en este
lenguaje
existe un método llamado FindComponent que devuelve el componente indicado
por un nombre. Lo que yo digo es que debe haber algún método más directo
para obtener un control a partir de un nombre, es básico y no creo que se
les haya escapado esto a los muchachos de microsoft. Me parece que no es
la
solución más elegante utilizar un foreach para obtener un control por el
nombre, se necesita programar muchas líneas de código cuando se podría
solucionar con una, no sé que piensan ustedes.

Bruno.

"Norberto Planchart" escribió en el mensaje
news:eZvl%
Umm
A mi me muestra todos
Copia aqui el codigo y el nombre de tus controles (con detalle de
mayuscula
y miniscula)
if (c.Name.ToUpper()==nombre.ToUpper()) //cambia eso a ver

Norberto Planchart, MCSD.Net
Caracas - Venezuela


Respuesta Responder a este mensaje
#5 Bruno Reato
19/07/2005 - 18:04 | Informe spam
Ahh ok Norberto...
Solamente es que me había llamado la atención la pregunta de José y la
solución que le habían dado... Yo pensaba que en el .Net Framework 1.1 ya
tenía un método para realizar esto en WinForms.

Bruno.

"Norberto Planchart" escribió en el mensaje
news:%
epale Bruno
:-)
mira en ASP.Net esta FindControl();
y se usa asi:

Label o;
o = (Label) FindControl("L1");
o.BackColor = Color.Blue;
FACIL!!!

En windows form de VS 2003 FrameWork 1.1 ha ha no se puede. (o al menos yo
no se ni lo veo)

Pero tranquilo que ya en VS 2005 framework 2.0 se puede hacer asi:
this.Controls.Find("L1", true);

this.Controls.Find("L1");

El segundo parámetro es que busque en sus hijos.


Norberto Planchart, MCSD.Net
Caracas - Venezuela

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida