llamar a metodos desde System.Controls

09/02/2007 - 13:46 por Xuri | Informe spam
Hola, mirad, tengo una clase llamada "formulario" en la cual todos los
mantenimientos ( clientes, articulos, etc ) son derivados de ella.

Ahora bien en esta clase "formulario" tengo por ejemplo esto:

foreach ( System.controls ctrl in this.controls )
{
ctrl.Enabled=false;

}

y funciona pero me interesa tambien poder hacer algo asi:

foreach ( System.controls ctrl in this.controls )
{
if (ctrl.GetType().ToString() == "facturacion.clases.clase_en_concreto"){

ctrl.propiedad_cualquiera="";

}


}

Pero claro, me da error porque no es una propiedad de objeto, sino una
propiedad de esa clase exclusivamente.

Como puedo hacerlo?

Gracias. Un saludo

Preguntas similare

Leer las respuestas

#1 Juan Diego Bueno
09/02/2007 - 14:25 | Informe spam
Si creo haberte entendido... y te refieres a que el problema lo tienes
con gettype, utiliza el operador is:

if (ctrl is facturacion.clases.clase_en_concreto)

Saludos

On 9 feb, 13:46, Xuri wrote:
Hola, mirad, tengo una clase llamada "formulario" en la cual todos los
mantenimientos ( clientes, articulos, etc ) son derivados de ella.

Ahora bien en esta clase "formulario" tengo por ejemplo esto:

foreach ( System.controls ctrl in this.controls )
{
ctrl.Enabled=false;

}

y funciona pero me interesa tambien poder hacer algo asi:

foreach ( System.controls ctrl in this.controls )
{
if (ctrl.GetType().ToString() == "facturacion.clases.clase_en_concreto"){

ctrl.propiedad_cualquiera="";

}

}

Pero claro, me da error porque no es una propiedad de objeto, sino una
propiedad de esa clase exclusivamente.

Como puedo hacerlo?

Gracias. Un saludo
Respuesta Responder a este mensaje
#2 Alberto Poblacion
09/02/2007 - 16:14 | Informe spam
"Xuri" wrote in message
news:
[...] me interesa tambien poder hacer algo asi:

foreach ( System.controls ctrl in this.controls )
{
if (ctrl.GetType().ToString() ==
"facturacion.clases.clase_en_concreto"){

ctrl.propiedad_cualquiera="";

}

Pero claro, me da error porque no es una propiedad de objeto, sino una
propiedad de esa clase exclusivamente.

Como puedo hacerlo?



Tienes que hacer un "cast" para convertir el objeto en la clase deseada.
Por cierto, para comprobar el tipo de objeto es mejor usar el operador "is"
en lugar de comparar como string el nombre del Tipo:

foreach (System.Control ctrl in this.controls)
{
if (ctrl is facturacion.clases.clase_en_concreto)
{
((facturacion.clases.clase_en_concreto)ctrl).propiedad_cualquiera="";
}
}
Respuesta Responder a este mensaje
#3 Xuri
09/02/2007 - 19:04 | Informe spam
muchisimas gracias a los dos, de verdad.. voy a probar.

"Alberto Poblacion" wrote:

"Xuri" wrote in message
news:
> [...] me interesa tambien poder hacer algo asi:
>
> foreach ( System.controls ctrl in this.controls )
> {
> if (ctrl.GetType().ToString() ==
> "facturacion.clases.clase_en_concreto"){
>
> ctrl.propiedad_cualquiera="";
>
> }
>
> Pero claro, me da error porque no es una propiedad de objeto, sino una
> propiedad de esa clase exclusivamente.
>
> Como puedo hacerlo?

Tienes que hacer un "cast" para convertir el objeto en la clase deseada.
Por cierto, para comprobar el tipo de objeto es mejor usar el operador "is"
en lugar de comparar como string el nombre del Tipo:

foreach (System.Control ctrl in this.controls)
{
if (ctrl is facturacion.clases.clase_en_concreto)
{
((facturacion.clases.clase_en_concreto)ctrl).propiedad_cualquiera="";
}
}



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