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

唯一の問題は、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;
    }

私はここで何が間違っているのですか?

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 に答える