自定义控件里DefaultValue属性的作用

4782阅读 0评论2011-07-22 findmywayout
分类:嵌入式

老外的回答:                                                                            
DefaultValue has nothing to do with setting the inital value of the property as defined in the documentation for DefaultValueAttribute:                                                                            
You can create a DefaultValueAttribute with any value. A member's defaultvalue is typically its initial value. A visual designer can use the defaultvalue to reset the member's value. Code generators can use the default                                                                            
values also to determine whether code should be generated for the member.                                                                            
                                                                            
一位网友:                                                                            
DefaultValue的作用:不是提供设计时的默认值,他的作用是 当你在IDE的属性栏里 输入或选择的值 与 你DefaultValue相同时,这个值不变黑【加粗显示】。                                                                            
补充一下,就是当你在设计视图中在属性编辑器中,把属性值设置成默认值时,该值就不再加粗显示。明白?他只有这么一个作用,你设置的值跟他DefaultValue一样时,他不加粗显示,再没别的用处。                                                                            
问题就是有时你在编辑器的属性里看到他已经默认了,所以就当是选中了,所以就不设置了,而你的控件里却没有设置默认值(不是设置DefaultValue),从而导致你总感觉莫名其妙的问题。                                                                            
属性看起来没有变粗有两种情况:一是设置了DefaultValue,而你没有自己选择或输入值,二是选择或输入了一个值与DefaultValue值一样,你看不出来。                                                                            
当然DefaultValue不是可以任意设置的,他得设置成跟这个属性相同的类型,不然重置时就会出现类似提示:                                                                            
---------------------------                                                                            
Microsoft Visual Studio                                                                            
---------------------------                                                                            
类型“System.String”的对象无法转换为类型“YongFa365.Controls.NumTextBox.NumTextBox+NumTextBoxType”。                                                                            
---------------------------                                                                            
                                                                            
DefaultValue“不是提供设计时的默认值”。仅仅起到重置属性,不生成代码的作用。默认值在属性定义中对应的private处可设定。
上一篇:C#获取枚举名称
下一篇:设计器模式下移除属性和事件的代码