System.Drawing.SystemColors的默认值

时间:2020-03-05 18:47:35  来源:igfitidea点击:

我的自定义网格控件中有一个线色属性。我希望它默认为Drawing.SystemColors.InactiveBorder。我试过了:

[DefaultValue(typeof(System.Drawing.SystemColors), "InactiveBorder")]
public Color LineColor { get; set; }

但这似乎不起作用。我该如何使用默认值属性?

解决方案

回答

我们需要将第一个参数从" SystemColors"更改为" Color"。
似乎没有用于SystemColors类型的类型转换器,仅用于Color类型。

[DefaultValue(typeof(Color),"InactiveBorder")]

回答

这可能会有所帮助:http://support.microsoft.com/kb/311339-名为KB的文章
" DefaultValueAttribute类的MSDN文档可能令人困惑"

回答

根据Matt发布的链接,DefaultValue属性不会设置属性的默认值,而只是让表单设计者知道该属性具有默认值。如果从默认值更改属性,则该属性在属性窗口中显示为粗体。

我们不能使用自动属性设置默认值,而必须使用老式的方法:

class MyClass
{
    Color lineColor = SystemColors.InactiveBorder;

    [DefaultValue(true)]
    public Color LineColor {
        get {
            return lineColor;
        }

        set {
            lineColor = value;
        }
    }
}