我已扩展标准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
或其他任何内容,它会突然发挥作用。是什么导致了这个问题?
答案 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
类中被隐藏,以便隐藏。