首页 > 解决方案 > C# WinForm 停止控件属性设置为默认值,当它设置为一个值时也是默认值

问题描述

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

当设置为 5 时,值是粗体并且边距设置为 5: 在此处输入图像描述

但是,当我将其设置为 3 时,Visual Studio 假定我想将值“重置”为其默认值(注意属性文本不再以粗体显示):

在此处输入图像描述

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

标签: c#winformsuser-controls

解决方案


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

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

此属性的默认值来自CommonProperties.DefaultMarginwhich is internal 和 is Padding(3)


推荐阅读