System.Drawing.SystemColors的DefaultValue

时间:2008-09-04 13:18:16

标签: c# .net winforms user-controls

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

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

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

3 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

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

您无法使用自动属性设置默认值 - 您必须采用传统方式:

class MyClass
{
    Color lineColor = SystemColors.InactiveBorder;

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

        set {
            lineColor = value;
        }
    }
}