Ocultar métodos y propiedades heredadas

06/08/2004 - 16:32 por Pedro Ayensa | Informe spam
Hola, estoy elaborando un componente que hereda de
System.Windows.Forms.Form, pero quiero prepararlo para que quienes lo usen
sólo tengan acceso a los métodos y propiedades que haya implementado yo,
ocultando todos los demás.
¿Es posible? Gracias.

Preguntas similare

Leer las respuestas

#6 Pedro Ayensa
08/08/2004 - 03:12 | Informe spam
Me alegro de haber dado con la respuesta correcta. Todo ha funcionado de
maravilla... O casi. Cuando pensé que todo estaba preparado, he decidido
portar mi proyecto a Visual Basic .NET Express 2005, y a partir de entonces
todo son problemas. Para ser exactos, de momento sólo un problema:

Illegal cross-thread operation: Control 'Notificador' accessed from a thread
other than the thread it was created on.

He leído que esto se podría solucionar con delegados, pero estoy hecho un
lío, no sé donde colocarlos realmente. La clase notificador es el formulario
que creé yo. Está encapsulada dentro de una clase normal donde implementé
las propiedades y métodos que necesitaba.
El error me sale al crear y utilizar el control en una aplicación...
¿Alguna sugerencia?

"Tristan" escribió en el mensaje
news:uRelER$
Exacto!! Esa es la mejor manera. Encapsula el formulario dentro de otra
clase que no herede de Form.

En realidad en OOP es siempre así, no se puede cortar lo que se hereda,
puesto que rompería principios importantes de la OOP.

Como mucho lo que puedes hacer es esconder las propiedades para que no


sean
visibles desde el diseñador. Esto se consigue con el atributo Browsable,
pero desde luego la forma correcta es la que has elegido.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#7 Pedro Ayensa
08/08/2004 - 03:35 | Informe spam
Parece que el problema está relacionado con dos Timers. La excepción salta
al entrar en el handler del evento Elapsed...

"Pedro Ayensa" escribió en el mensaje
news:
Me alegro de haber dado con la respuesta correcta. Todo ha funcionado de
maravilla... O casi. Cuando pensé que todo estaba preparado, he decidido
portar mi proyecto a Visual Basic .NET Express 2005, y a partir de


entonces
todo son problemas. Para ser exactos, de momento sólo un problema:

Illegal cross-thread operation: Control 'Notificador' accessed from a


thread
other than the thread it was created on.

He leído que esto se podría solucionar con delegados, pero estoy hecho un
lío, no sé donde colocarlos realmente. La clase notificador es el


formulario
que creé yo. Está encapsulada dentro de una clase normal donde implementé
las propiedades y métodos que necesitaba.
El error me sale al crear y utilizar el control en una aplicación...
¿Alguna sugerencia?

"Tristan" escribió en el mensaje
news:uRelER$
> Exacto!! Esa es la mejor manera. Encapsula el formulario dentro de otra
> clase que no herede de Form.
>
> En realidad en OOP es siempre así, no se puede cortar lo que se hereda,
> puesto que rompería principios importantes de la OOP.
>
> Como mucho lo que puedes hacer es esconder las propiedades para que no
sean
> visibles desde el diseñador. Esto se consigue con el atributo Browsable,
> pero desde luego la forma correcta es la que has elegido.
>
> Juan Carlos Badiola
> MVP - C#
>
>


Respuesta Responder a este mensaje
#8 Tristan
08/08/2004 - 22:00 | Informe spam
¿Que tipo de timer estás utilizando, el de System.Windows.Forms, es decir el
control, o el de System.Threading?. El segundo ejecuta el timer en un nuevo
suproceso. Para trabajar con controles winforms, se debe utilizar el
primero.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#9 Pedro Ayensa
09/08/2004 - 00:31 | Informe spam
System.Timers.Timer, pero parece que todo ha empezado a funcionar con la
linea
reloj.SynchronizingObject = Me

¿Lo he hecho bien?


"Tristan" escribió en el mensaje
news:
¿Que tipo de timer estás utilizando, el de System.Windows.Forms, es decir


el
control, o el de System.Threading?. El segundo ejecuta el timer en un


nuevo
suproceso. Para trabajar con controles winforms, se debe utilizar el
primero.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#10 Tristan
09/08/2004 - 08:37 | Informe spam
Bueno, no se si con eso se arregle el problema, pero es que no deberías
haber usado ese timer. Para trabajar sobre controles, desde un timer, se
debe utilizar siempre el de System.Windows.Forms, que lo tienes directamente
como control del cuadro de herramientas en la pestaña de controles. En la
pestaña de componentes tienes el que has usado.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida