c# - C# WinForm 停止控件属性设置为默认值,当它设置为一个值时也是默认值
问题描述
这个问题最好通过一个例子来解释:我有一个默认边距为 0 的 UserControl,但是我有一个需要边距为 3 的控件实例。我可以将控件的边距设置为 2、4、 10,或除 3 以外的任何其他值 - 但因为 3 是 winforms 中边距的默认值 - Visual Studio 假定我正在尝试重置控件以继承默认值。通过属性变粗的方式可以明显看出这一点:
但是,当我将其设置为 3 时,Visual Studio 假定我想将值“重置”为其默认值(注意属性文本不再以粗体显示):
不幸的是,对于这个 UserControl,默认值实际上是 0 - 因此将其设置为 3 实际上会在运行时将边距设置为 0。我需要像使用任何其他整数一样将值设置为 3
解决方案
您需要覆盖DefaultMargin
用户控件的属性:
protected override Padding DefaultMargin
{
get { return new Padding(0); }
}
此属性的默认值来自CommonProperties.DefaultMargin
which is internal 和 is Padding(3)
。
推荐阅读
- ios - Exception 'Call must be made on main thread' iOS
- python - Why am I getting a different response from server with URL passed from list to requests.get() vs. hard-coded string?
- python - Python requests with certificates
- apache - 如何将 Qbittorrent webui 端口放在 https Apache2 服务器后面?
- javascript - JS/ES6/lodash 查找两个多维数组缺失元素的索引
- html - 带有非字母字符的烧瓶静态图像文件名不起作用
- sql - 如果我可以在一个程序中做我需要的所有事情,我为什么要使用触发器呢?
- android - 我什么时候可以添加应用内购买?谷歌安卓应用商店
- bash - Problem getting `jq` and `watch` to play together nicely?
- geometry - 如何快速识别具有角度阈值的单位向量?