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; } } }