2012-04-16 18 views
5

Tengo un control de usuario que hereda de UserControl. Es un botón, así que estoy tratando de hacer que el texto en el botón se pueda cambiar utilizando la propiedad Text como los botones reales, en lugar de poner mi nombre como _Text. Tengo el siguiente código pero no funciona (es decir, no aparece en la ventana de propiedades). El nombre de la etiqueta es ContentPresenter¿Por qué la propiedad Texto del control personalizado no aparece en la ventana Propiedades?

public override string Text 
{ 
    get 
    { 
     return ContentPresenter.Text; 
    } 
    set 
    { 
     ContentPresenter.Text = value; 
    } 
} 
+1

Este tema debería ayudar: http://stackoverflow.com/questions/2873339/why-does-the-text-property-overridden-in-user-control-is-not-showing-at-design-t –

Respuesta

12

UserControl hace un gran esfuerzo para ocultar la propiedad Text. A partir de los metadatos:

[Browsable(false)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
    [EditorBrowsable(EditorBrowsableState.Never)] 
    [Bindable(false)] 
    public override string Text { get; set; } 

Usted puede hacer que sea visible por razones imperiosas de esos atributos en el código:

[Browsable(true)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    [EditorBrowsable(EditorBrowsableState.Always)] 
    [Bindable(true)] 
    public override string Text 
    { 
     get { return ContentPresenter.Text; } 
     set { ContentPresenter.Text = value; } 
    } 

No estoy prometiendo eso es suficiente para hacer que funcione, pero probablemente lo es.

+0

Me di cuenta de esto por el comentario de Steve Wong y tuve que traducirlo a C#, y este es el código que se terminó y funcionó bien, gracias – Oztaco

+0

Gracias por la respuesta a esta pregunta, me ayudó a resolver otro problema que estaba teniendo: http://stackoverflow.com/questions/14899899/win-7-iis-7-5-weird-behavior-with-system-componentmodel-browseableattribute/14938911#14938911 – dcp

Cuestiones relacionadas