2012-04-16 43 views
5

我有一个从UserControl继承的用户控件。这是一个按钮,所以我试图在按钮中创建文本,通过使用Text属性(如真实按钮)进行更改,而不是像_Text这样命名我自己的文本。我有以下代码,但它不起作用(即它不显示在属性窗口中)。标签的名称是ContentPresenter为什么我的自定义控件的文本属性不会显示在属性窗口中?

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

此主题应该有所帮助:http://stackoverflow.com/questions/2873339/why-does-the-text-property-overridden-in-user-control-is-not-showing-at-design-t – 2012-04-16 20:06:33

回答

12

UserControl非常重视隐藏Text属性。从元数据:

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

你可以把它通过覆盖在你的代码的那些属性可见:

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

我不看好这足以令它的工作,但它可能是。

+0

我从Steve Wong的评论中发现了这一点,并且必须将它翻译成C#,并且这段代码已经结束并且工作正常,谢谢 – Oztaco 2012-04-16 20:25:20

+0

感谢您回答这个问题,它帮助我解决了另一个问题: http://stackoverflow.com/questions/14899899/win-7-iis-7-5-weird-behavior-with-system-componentmodel-browseableattribute/14938911#14938911 – dcp 2013-02-18 14:47:11

相关问题