我正在定义一个要与PropertyGrid控件一起使用的自定义类。比如说,其中一个属性是这样定义的:
[CategoryAttribute("Section Name"),
DefaultValueAttribute("Default value"),
DescriptionAttribute("My property description")]
public string MyPropertyName
{
get { return _MyPropertyName; }
set { _MyPropertyName = value; }
}
private string _MyPropertyName;
如您所见DefaultValueAttribute
,定义了属性的默认值。这样的默认值在两种情况下使用:
如果此属性值从默认值更改,则
PropertyGrid
控件将以粗体显示,并且如果我调用
ResetSelectedProperty
的方法PropertyGrid
,它将将该默认值应用于选定的单元格。
这个概念很好用,除了DefaultValueAttribute
. 它只接受一个常数值。所以我很好奇,我可以动态设置它吗,比如说,从构造函数或稍后在代码中?
编辑:我能够找到让我阅读的代码DefaultValueAttribute
:
AttributeCollection attributes = TypeDescriptor.GetProperties(this)["MyPropertyName"].Attributes;
DefaultValueAttribute myAttribute = (DefaultValueAttribute)attributes[typeof(DefaultValueAttribute)];
string strDefaultValue = (string)myAttribute.Value;
问题是,你如何设置它?