c# - 如何使用自定义 DefaultBackColor 制作 UserControl?

标签 c# .net winforms user-controls

当我右键单击属性网格中的自定义 UserControl 的 BackColor 属性,然后单击“重置”时,我希望将 BackColor 属性更改为(例如) Color.LightGreen,并且属性值显示为非粗体,以指示它是默认值。

目前,我知道我可以做到这一点:

public override void ResetBackColor() {
    BackColor = Color.LightGreen;
}

只要在重置时将其设置为浅绿色即可。但它仍然在属性网格中显示为粗体,表明当前值不是默认值。

我注意到 Control 类有一个静态只读属性 DefaultBackColor。不幸的是,由于它是静态的,我无法覆盖它。

有什么方法可以获得我想要的所有功能吗?

最佳答案

您可以通过使用 DefaultValue 来实现此目的属性:

public UserControl1()
{
    InitializeComponent();
    this.BackColor = Color.LightGreen;
}

[DefaultValue(typeof(Color), "LightGreen")]
public override Color BackColor
{
    get
    {
        return base.BackColor;
    }
    set
    {
        base.BackColor = value;
    }
}

关于c# - 如何使用自定义 DefaultBackColor 制作 UserControl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1187561/

相关文章:

c# - 通过 C 库在 C# 应用程序之间共享数据

c# - 在 IIS 6 中托管 .net 4.0 REST WCF 服务

c# - 安装新插件时 nopCommerce 插件中的错误 "The method or operation is not implemented."是什么

c# - 如何从 savefiledialog 获取完整路径并在 "startInfo.Arguments"中使用?

c# - 免费的 WinForms 图像编辑器控件

c# - dapper 中的动态 where 子句

.net - tcplistener 绑定(bind)所有本地地址?

.net - Vb.net 两个逗号分隔的列表

c++ - 在 C++ 中使用 C 库

c# - 如何过滤 DataGridView?