crear componente nuevo

13/03/2007 - 13:56 por Jordi Sanchez | Informe spam
Hola,

He creado un componente para usar en mi proyecto.

Cuando añado el control a mi proyecto, y entro en las propiedades
aparecen muchas propiedades que no son las que yo he creado por ejemplo:
Font, ForeColor... puedo eliminarlas?

gracias

Preguntas similare

Leer las respuestas

#1 Federico A. Colli
13/03/2007 - 16:52 | Informe spam
Hola
Como borrarlas no se puede dado que se heredan automáticamente de la
clase padre, pero puedes sobreescribirlas ocultando su visibilidad
para cualquiera que la utilice con Private o Protected. En el caso que
no sean sobreescribibles puedes aplicar Shadows

Saludos
AUS Federico A. Colli
Respuesta Responder a este mensaje
#2 Jordi Sanchez
14/03/2007 - 12:50 | Informe spam
Hola Federico,

Creo entender lo que dices, pero lo he intentado y supongo q algo hago
mal...

Por ejemplo con la propiedad autosize (que hereda del pictureBox que he
insertado para darle una imagen al control)

He probado con shadows y con Private o Protected, pero sigue apareciendo
en las propiedades

Shadows Property autosize() As Boolean
Get
Return true
End Get

Set(ByVal Value As Boolean)
autosize = Value
End Set
End Property



" escribió en el mensaje
news:

Hola
Como borrarlas no se puede dado que se heredan automáticamente de la
clase padre, pero puedes sobreescribirlas ocultando su visibilidad
para cualquiera que la utilice con Private o Protected. En el caso que
no sean sobreescribibles puedes aplicar Shadows

Saludos
AUS Federico A. Colli
Respuesta Responder a este mensaje
#3 Federico A. Colli
14/03/2007 - 14:58 | Informe spam
Bien, creo que se como viene el tema, te doy un ejemplo (no tengo el
entorno de desarrollo como para probarlo, solo estoy aplicando
"sentido comun" en base a lo que he probado en su momento).

Si creas un control de usuario, llamemosle A y le agregas propiedades
personalizadas, en el editor estas no se visualizaran. Si creas un
componente, B, que herede de A este si mostrará dichas propiedades
personalizadas en A, pero no las personalizadas en el mismo B.
Es decir, que en el entorno (por lo menos) muestra las propiedades de
la clase de donde deriba el componente que se está desarrollando, el
porque der esto puedo suponer que es que al heredar de un componente
padre el entorno lo está ejecuntando (al padre, esta creando una
instancia) internamente para poder visualizarlo y mostrar sus
atributos.

Prueba lo siguiente para verificar:
1) Prueba por código utilizar esta clase desde otra, a ver si
efectivamente muestra o no las propiedades que estas sobreescribiendo
2) Prueba insertar este componente en un form, por ejemplo, a ver si
siguen visibles las propiedades sobreescritas
3) Prueba crear otro componente de este, a ver si en el editor
efectivamente no muestra dichos atributos.

Otra solucion seria utilizar el patron proxy. En este patron se crea
una clase pero que no herede de ninguna otra. Lo unico que debes hacer
es crear una instancia interna de la clase de donde originalmente
deribarías y creas propiedades dentro de las cuales llamas a las
mismas propiedades de la instancia que necesitas, por ejemplo:

Class A (con todo lo que no quieres mostrar)
...

Class B
Private m_objA As New A

Property Nombre() As String
Get
Return m_objA.Nombre
End Get

Set(ByVal Value As String)
m_objA.Nombre= Value
End Set
End Property

Saludos
AUS Federico A. Coli
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida