C# WinForm Stop control 属性 setting to default 当它设置为一个值也是默认值

C# WinForm Stop control property setting to default when it is set to be a value which is also the default

这个问题最好通过一个例子来解释: 我有一个默认边距为 0 的 UserControl,但是我有一个需要边距为 3 的控件实例。我可以将控件的边距设置为 2、4、10 或除 3 以外的任何其他值- 但因为 3 是 winforms 中边距的默认值 - Visual Studio 假设我正在尝试重置控件以继承默认值。这通过属性加粗的方式显而易见:

设置为 5 时,值以粗体显示,边距设置为 5:

但是,当我将它设置为 3 时,Visual Studio 假设我想 "reset" 将值设为默认值(注意 属性 文本不再是粗体):

不幸的是,对于此 UserControl,默认值实际上是 0 - 因此将其设置为 3 实际上会在 运行 时将边距设置为 0。我需要将值设置为 3,就像我可以使用任何其他整数一样

您需要覆盖 DefaultMargin 属性 用户控件:

protected override Padding DefaultMargin
{
    get { return new Padding(0); }
}

此 属性 的默认值来自内部的 CommonProperties.DefaultMargin,即 Padding(3)