2012-04-16 7 views
5

私はUserControlから継承するユーザーコントロールを持っています。これはボタンなので、実際のボタンのようなTextプロパティを使用することで、_Textのように自分の名前を変更するのではなく、ボタンのテキストを変更できるようにしようとしています。次のコードがありますが、動作しません(つまり、プロパティウィンドウに表示されません)。ラベルの名前はのContentPresenterカスタムコントロールのTextプロパティが[プロパティ]ウィンドウに表示されないのはなぜですか?

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 –

答えて

12

ユーザーコントロールは、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

私はそれが私が私が持っていた別の問題を解決する助け、この質問への答えに感謝 – Oztaco

+0

おかげで、になってしまったし、それがうまく働いているスティーブ・ウォンさんのコメントからこれを考え出したとC#にそれを翻訳しなければならなかったが、これはコードです: http://stackoverflow.com/questions/14899899/win-7-iis-7-5-weird-behavior-with-system-componentmodel-browseableattribute/14938911#14938911 – dcp

関連する問題