我的自定义网格控件中有一个线条颜色属性。我希望它默认为Drawing.SystemColors.InactiveBorder
。我试过了:
[DefaultValue(typeof(System.Drawing.SystemColors), "InactiveBorder")]
public Color LineColor { get; set; }
但它似乎不起作用。如何使用默认值属性?
答案 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;
}
}
}