如何公开UserControl的Text属性?

时间:2011-11-18 19:13:20

标签: c# winforms user-controls

  

可能重复:
  Text property in a UserControl in C#

如何将Text的{​​{1}}属性标记为可浏览?


.NET UserControl类具有Text属性。

不幸的是,UserControl的{​​{1}}属性不是browsable

Text

在我的UserControl想要在属性窗口中公开// // // Returns: // The text associated with this control. [Bindable(false)] [EditorBrowsable(EditorBrowsableState.Never)] [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public override string Text { get; set; } 属性(即使其成为“可浏览”)。我试着盲目地宣布它可以浏览:

UserControl

现在它出现在属性窗口中,除了它现在什么也没做。

我试图盲目地调用Text来恢复功能:

[Browsable(true)]
public override string Text { get; set; }

现在该属性在设计时运行,但属性值不会保留到base.Text及其[Browsable(true)] public override string Text { get {return base.Text;} set { base.Text = value; this.Invalidate(); } } 代码。

公开Form.Designer.cs InitalizeComponent属性的正确的方式是什么,以便它:

  • 可在属性窗口中浏览
  • 功能正常
  • 保留在表单设计器

,作为奖励

  • 知道什么时候改变

1 个答案:

答案 0 :(得分:11)

你走在正确的轨道上;只需添加[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]

即可

要了解更改的时间,请覆盖OnTextChanged

protected override void OnTextChanged (EventArgs eventArgs)
{
    System.Diagnostics.Trace.WriteLine("OnTextChanged(): eventArgs: " + eventArgs);  
    base.OnTextChanged(eventArgs);
}