Autor Tema: Como eliminar una propiedad  (Leído 3266 veces)

0 Usuarios y 1 Visitante están viendo este tema.

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Como eliminar una propiedad
« en: Julio 22, 2011, 06:03:50 pm »
Saludos a todos !!!

Tal como dice el título de este Post, he creado un CustomControl en VB 2008 :o, le creados algunas propiedades particulares, y por neceidades de funcionamiento (del control) entre dichos atributos, se diseñó una llamada TextButton que realiza exactamente lo mismo que la propiedad Text (se preguntarán por que 2 de lo mismo ::), esperen...). Lo que sucede es que con la propiedad Text, al realizar los cambios en el Grid de 'Properties' no sucede nada, tengo que hacer click fuera del área >:( del Control personalizado para que el Text cambie :(, mientra que la propiedad personalizada TextButton, dicho cambio se ve en el momento :).



(Gracias a DIOS !!! ;D ;D ;D por fin aprendí a subir una imagen a un post !!!, y gracias al amigo YAcosta, por la orientación al respecto).

Como pueden ver en la imagen arriba, quiero eliminar la señalada: Text (ojo: la funcionalidad no se ve afectado para nada) no es muy estético que digamos, que se vean 2 propiedades (Text y TextButton) que hagan exactamente lo mismo !!! ::)

He encontrado el siguiente código:

Código: [Seleccionar]
Public Class MyControlDesigner
    Inherits System.Windows.Forms.Design.ControlDesigner

    Protected Overrides Sub PreFilterProperties(ByVal properties As System.Collections.IDictionary)
        MyBase.PreFilterProperties(properties)
        properties.Remove("BackColor")  '// se cambiaría por Text (la que quiero eliminar)...
    End Sub
End Class

<DesignerAttribute(GetType(MyControlDesigner))> _
Public Class MyControl
    ' ...
End Class

Pero no funciona >:( >:( >:( ya que no es reconocido '.ControlDesigner' ni la sub "PreFilterProperties" :(

Por favor alguien que pueda guiarme al respecto, agradecido estaré.


Saludos.
Manuel F. Borrego S. 8)
Barcelona, Edo. Anzoategui. Venezuela.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

seba123neo

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Como eliminar una propiedad
« Respuesta #1 en: Julio 22, 2011, 10:28:11 pm »
¿ de donde esta heredando el control ?, por ejemplo si heredas del control button, vas a tener todas las propiedades que tiene un control button, y obviamente vas a tener la propiedad Text, para crearte una propia y esconder la del control podes hacer algo asi, este es un simple ejemplo de un control con la Propiedad .Text escondida y con una propiedad llamada .TextPropio

Código: [Seleccionar]
Imports System.ComponentModel

Public Class cuBoton
    Inherits Button

    <EditorBrowsable(EditorBrowsableState.Always)> _
    <Browsable(False)> _
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
    <Bindable(True)> _
    Public Overrides Property Text() As String
        Get
            Return MyBase.Text
        End Get
        Set(ByVal value As String)
            MyBase.Text = value
        End Set
    End Property

    <EditorBrowsable(EditorBrowsableState.Always)> _
    <Browsable(True)> _
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _
    <Bindable(True)> _
    Public Property TextoPropio() As String
        Get
            Return MyBase.Text
        End Get
        Set(ByVal value As String)
            MyBase.Text = value
        End Set
    End Property

End Class

el secreto es en  "<Browsable(True)> _"

saludos.

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Solución al problema...
« Respuesta #2 en: Julio 23, 2011, 02:41:02 am »
Gracias Seba !!!

Al poco de iniciar este Post, seguí indagando y revisando, porque tenía la plena certeza de que me estaba equivocando, que estaba omitiendo algo... y efectivamente era de omisión:

Código: [Seleccionar]
Option Explicit On
Option Strict On
'//
Imports System.ComponentModel
Imports System.Drawing.Drawing2D
'//
<DesignerAttribute(GetType(CButtonIIIDesigner))> _
Public Class CButtonIII

#Region "Control Properties"

       '
       '
       '
       '
       Public Property TextButton() As String
              Get
                     Return _textButton
              End Get
              Set(ByVal value As String)
                     _textButton = value
                     Me.Invalidate()
              End Set
       End Property

#End Region

End Class

Public Class CButtonIIIDesigner

       Inherits System.Windows.Forms.Design.ControlDesigner

       Protected Overrides Sub PostFilterProperties(ByVal properties As System.Collections.IDictionary)
              MyBase.PostFilterProperties(properties)
              '//
              properties.Remove("Text")
              properties.Remove("Font")
              properties.Remove("ForeColor")
       End Sub

End Class

Al colocar "Imports System.ComponentModel", crear una clase particular que heredera del control creado: "Public Class CButtonIIIDesigner" mediante de
"Inherits System.Windows.Forms.Design.ControlDesigner" por supuesto que la Sub "PreFilterProperties" era reconocida, y como puedes ver fueron eliminadas 3 propiedades: Text (que estaba duplicada en su función), Font y ForeColor (estas últimas porque no tienen utilidad alguna con el control diseñado.

Con respecto a la propiedad Text:



Solo quedó la creada especialmente para el control (TextButton), la propiedad Text que era heredada del control fue eliminada. ;D

Gracias y voy a probar el codigo que supliste.


Saludos.
Manuel F. Borrego S. 8)
Barcelona. Venezuela.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

seba123neo

  • Moderador
  • Terabyte
  • *****
  • Mensajes: 763
  • Reputación: +88/-5
    • Ver Perfil
Re:Como eliminar una propiedad
« Respuesta #3 en: Julio 23, 2011, 04:50:04 pm »
probalo, pero una pregunta, que necesitas hacer ? que control queres crear?

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Como eliminar una propiedad
« Respuesta #4 en: Julio 23, 2011, 07:23:27 pm »
Saludos Seba !!! :D

probalo, pero una pregunta, que necesitas hacer ? que control queres crear?

Lo que pretendo crear, es un botón (tipo CommandButton) personalizado (lo más parecido a un 3D), esto, a partir de un CustomControl. Con el mismo tiene las siguientes carácterísticas:

- Fondo degradado (donde se puede configurar los colores representando sus 3 estados:
  Normal,  cuando el cursor pas por 'encima' de él y cuando es 'pulsado'.
- Redondeo de esquinas, a través de la propiedad 'CornerRadius'.
- Texto con 'Contorno' (de momento con el color frontal y de fondo fijos).
- Tipo y tamaño de 'fuente' configurables (a través de la función o método DrawString.
- Tamaño del control configurable (sin pérdida de sus características).

Actualmente, lo volví a crear en un proyect tipo WindowsControlLibrary, para reutilizar en mis proyectos, pero al referenciarlo, lo hace bien, pero no me aparece el control en el ToolBox.
Lo que hice fue, tomar de referencia la DLL creada en la carpeta "\bin\Release\libreria.dll" la cual toma, pero no me aparece... >:( >:( >:(


Saludos !!!
Manuel F. Borrego S. 8)
Barcelona. Venezuela.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Como eliminar una propiedad
« Respuesta #5 en: Julio 23, 2011, 07:49:53 pm »
Se me olvidaba  ::)

Se que quizás existen ya botones 3D como los que estoy creando, pero mi intención es personalizarlos lo más posible. Existe una librería (CButtonLib) y un proyecto de ejemplo, donde el creador de ella, logra unos magnificos botones 3D. el problema, es que cuando la pongo a funcionar muestra un MessageBox de advertencia, donde dice que su localización no es segura, lo cual podría dar lugra a inestabilidad de la aplicación (VB 2008) y efectivamente eso es lo que pasa.
He ahí la razón de porque estoy creando los míos.

Saludos !!!
Manuel F. Borrego S 8)
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Como eliminar una propiedad
« Respuesta #6 en: Julio 31, 2011, 06:50:04 pm »
Bueno, resuelto el problema en cuanto un control creado, que no me aparecía: hago lo siguiente:

Primero...



Selecciono escoger Item para agregarlo.

Luego...



Escojo la DLL del control y a continuación este aparecerá en el ToolBox...



Y automáticamente se crea la referencia:




Bueno eso es todo, ahí me doy cuenta (gracias a DIOS !!!) que no es difícil.



Saludos !!!
Manuel F. Borrego S. 8)
Barcelona, Venezuela.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!