4

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

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

但这似乎不起作用。如何使用默认值属性来做到这一点?

4

2 回答 2

13

您需要将第一个参数从 更改SystemColorsColor
似乎没有类型的类型转换器SystemColors,只有Color类型。

[DefaultValue(typeof(Color),"InactiveBorder")]
于 2008-09-04T13:23:38.647 回答
2

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

您不能使用自动属性设置默认值 - 您必须以老式方式进行设置:

class MyClass
{
    Color lineColor = SystemColors.InactiveBorder;

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

        set {
            lineColor = value;
        }
    }
}
于 2008-09-04T16:03:40.837 回答