我正在创建一个继承UserControl的自定义标签。为了封装Text属性,我创建了以下脚本。
[Browsable(true)] // <--- This is necessary to show the property on design mode
public override string Text
{
get
{
return label1.Text;
}
set
{
label1.Text = value;
}
}
唯一的问题是,即使我在designmode上设置了Text属性,当我重建项目时,文本也会返回默认值。
public UCLabel() // <--- this is the class constructor
{
InitializeComponent();
BackColor = Global.GetColor(Global.UCLabelBackColor);
label1.ForeColor = Global.GetColor(Global.UCLabelForeColor);
label1.Text = this.Name;
}
我在这里做错了什么?
答案 0 :(得分:1)
显然,'text'的值不是序列化的。
要解决此问题,您只需添加即可 DesignerSerializationVisibility Attribute
// This is necessary to show the property on design mode.
[Browsable(true)]
// This is necessary to serialize the value.
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public override string Text
{
get
{
return this.label1.Text;
}
set
{
this.label1.Text = value;
}
}