可绑定属性不起作用

时间:2015-11-22 18:22:16

标签: c# winforms visual-studio

我已扩展标准TextBox控件以支持填充。它可以工作,除了IDE不会将填充持久化到设计器类中。

代码:

    [EditorBrowsable(EditorBrowsableState.Always)]
    [Browsable(true)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    [Bindable(true)]
    public new Padding Padding
    {
        get
        {
            return padding;
        }
        set
        {
            padding = value;
            OnPaddingChanged(EventArgs.Empty);
        }
    }

奇怪的是,如果我将属性名称更改为MyPadding或其他任何内容,它会突然发挥作用。是什么导致了这个问题?

1 个答案:

答案 0 :(得分:2)

当您为了更改某些属性而隐藏基类属性时,不要使用自己的支持字段,而是使用基本属性本身,如下所示

[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Bindable(true)]
public new Padding Padding
{
    get { return base.Padding; }
    set { base.Padding = value; }
}

P.S。虽然上面的代码解决了持久性问题,但我不太清楚你的意思是什么"它起作用"因为必须有一个充分的理由让相应的Control属性在TextBoxBase类中被隐藏,以便隐藏。