1

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

唯一的问题是,即使我在设计模式下设置了 Text 属性,当我重建项目时,文本也会恢复为默认值。

    public UCLabel() // <--- this is the class constructor
    {
        InitializeComponent();
        BackColor = Global.GetColor(Global.UCLabelBackColor);
        label1.ForeColor = Global.GetColor(Global.UCLabelForeColor);
        label1.Text = this.Name;
    }

我在这里做错了什么?

4

1 回答 1

1

显然,'text' 的值没有被序列化。

要解决此问题,您只需添加DesignerSerializationVisibility 属性

    // 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;
        }
    }
于 2013-01-24T08:00:35.457 回答