在用户控件中封装Text属性

时间:2013-01-24 07:18:52

标签: c# user-controls encapsulation

我正在创建一个继承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;
    }

我在这里做错了什么?

1 个答案:

答案 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;
        }
    }