como utilzar el objeto asignado a la propiedad Container de mi componente

24/01/2007 - 07:58 por Daniel R. Rossnagel | Informe spam
quiero poder tomar el obejto y llamar a sus metodos o enlzar a evnetos de
este.

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
24/01/2007 - 08:29 | Informe spam
"Daniel R. Rossnagel" wrote in message
news:%
quiero poder tomar el obejto y llamar a sus metodos o enlzar a evnetos de
este.



Tendrás que realizar un "cast" al tipo correcto del objeto contenedor
para llamar a sus métodos propios (aquellos que no existen en el tipo
IContainer). Por ejemplo, si el contenedor es un Form de tipo Form1, que
tiene un método Validar(), para llamarlo desde tu componente tienes que
hacer asi:

Form1 contenedor = this.Container as Form1;
if (contenedor!=null) contenedor.Validar();

La comprobación de si el "as" ha devuelto null se hace por precaución,
para que no dé un error si tu componente resulta estar contenido en otro
sitio distinto que no sea un Form1.
Respuesta Responder a este mensaje
#2 Daniel R. Rossnagel
24/01/2007 - 15:19 | Informe spam
No funciona, no se por que razon no me deja hacer el casting del Container,
simpre me retorna null, me podrias decir si a ti te funciona, haciendolo de
esa forma y teniendo en cuenta que el objeto this es n objeto que hereda de
Component.

Gracias mil por tu constante apoyo

"Alberto Poblacion"
escribió en el mensaje news:u%
"Daniel R. Rossnagel" wrote in message
news:%
quiero poder tomar el obejto y llamar a sus metodos o enlzar a evnetos de
este.



Tendrás que realizar un "cast" al tipo correcto del objeto contenedor
para llamar a sus métodos propios (aquellos que no existen en el tipo
IContainer). Por ejemplo, si el contenedor es un Form de tipo Form1, que
tiene un método Validar(), para llamarlo desde tu componente tienes que
hacer asi:

Form1 contenedor = this.Container as Form1;
if (contenedor!=null) contenedor.Validar();

La comprobación de si el "as" ha devuelto null se hace por precaución,
para que no dé un error si tu componente resulta estar contenido en otro
sitio distinto que no sea un Form1.


Respuesta Responder a este mensaje
#3 Alberto Poblacion
24/01/2007 - 15:45 | Informe spam
"Daniel R. Rossnagel" wrote in message
news:
No funciona, no se por que razon no me deja hacer el casting del
Container, simpre me retorna null, me podrias decir si a ti te funciona,
haciendolo de esa forma y teniendo en cuenta que el objeto this es n
objeto que hereda de Component.



Páralo con el Debugger en el sitio en que se consulta el Container, a
ver cuál es el tipo que te está llegando. Si ya de entrada te llega un null,
lógicamente seguirá siendo null después del cast. Si no te llega un null,
mira a ver cuál es el tipo del container que te está llegando.
Respuesta Responder a este mensaje
#4 Daniel R. Rossnagel
24/01/2007 - 16:19 | Informe spam
this.Container
Value = {System.ComponentModel.Container}
Type = System.ComponentModel.IContainer {System.ComponentModel.Container}

y de aca no salgo, por que no me daja hacer casting de este Type

"Alberto Poblacion"
escribió en el mensaje news:
"Daniel R. Rossnagel" wrote in message
news:
No funciona, no se por que razon no me deja hacer el casting del
Container, simpre me retorna null, me podrias decir si a ti te funciona,
haciendolo de esa forma y teniendo en cuenta que el objeto this es n
objeto que hereda de Component.



Páralo con el Debugger en el sitio en que se consulta el Container, a
ver cuál es el tipo que te está llegando. Si ya de entrada te llega un
null, lógicamente seguirá siendo null después del cast. Si no te llega un
null, mira a ver cuál es el tipo del container que te está llegando.



Respuesta Responder a este mensaje
#5 Alberto Poblacion
24/01/2007 - 16:30 | Informe spam
"Daniel R. Rossnagel" wrote in message
news:
this.Container
Value = {System.ComponentModel.Container}
Type = System.ComponentModel.IContainer {System.ComponentModel.Container}

y de aca no salgo, por que no me daja hacer casting de este Type



Pues no vas a poder hacer nada por esta vía. La clase Container no tiene
ninguna propiedad ni método que haga referencia al objeto que la contiene.
Solo habrías tenido suerte si el componente estuviera alojado en alguna
clase que implemetara el interface IContainer, en cuyo caso se podría hacer
el cast al tipo de dicha clase. Pero a través de Container no se puede
hacer. Tendrás que usar algún otro mecanismo para pasarle a tu componente la
referencia a la clase cuyos métodos quieres usar. Por ejemplo, modifica el
constructor para que acepte un parámetro y pásale al instanciarlo la clase
que quieres utilizar.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida