2012-04-16 13 views
5

Ho un controllo utente che eredita da UserControl. È un pulsante, quindi sto cercando di rendere il testo nel pulsante, modificabile utilizzando la proprietà Text come i pulsanti reali, invece di nominare il mio come _Text. Ho il seguente codice ma non funziona (cioè non appare nella finestra delle proprietà). Il nome dell'etichetta è ContentPresenterPerché la proprietà Testo del controllo personalizzato non viene visualizzata nella finestra Proprietà?

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

Questo thread dovrebbe aiutare: http://stackoverflow.com/questions/2873339/why-does-the-text-property-overridden-in-user-control-is-not-show-at-design-t –

risposta

12

UserControl fa uno sforzo significativo per nascondere la proprietà Text. Dal metadati:

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

si può rendere visibile l'override quegli attributi nel codice:

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

Non sto promettendo che basta per farlo funzionare, ma probabilmente lo è.

+0

ho capito questo dal commento di Steve Wong e ho dovuto tradurlo in C#, e questo è il codice è finito e ha funzionato bene, grazie – Oztaco

+0

Grazie per la risposta a questa domanda, mi ha aiutato a risolvere un altro problema che stavo avendo: http://stackoverflow.com/questions/14899899/win-7-iis-7-5-weird-behavior-with-system-componentmodel-browseableattribute/14938911#14938911 – dcp

Problemi correlati