定义组件属性的缺省值

博客介绍了.NET组件属性缺省值的两种指定方法。一是使用属性的特性类描述,给出了通用定义及常见数据类型的例子;二是使用ShouldSerialize<PropertyName>方法,该方法命名有约定,还提到一般会同时实现Reset<PropertyName>方法。此外还给出相关特性设定的参考文章链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

组件属性的缺省值有两种指定方法:
一、使用属性的特性类来描述
比如如下声明一个类的属性
public class MyClass
{
private int myProperty;
[DefaultValue(3)]
public int MyProperty
{
get{ return myProperty;}
set
{
if(myProperty!=value)
myProperty=value;
}
}
....
}
更为通用的特性描述是这样定义的 [DefaultValue(typeof(<MyType>),<FormatString>)]  其中<MyType>是Color,Font,Point,Int,String,float...等常见数据类型,<FormatString>就是<MyType>的ToString()方法输出的格式文本字串(通常是这样,当然如果类型在实现ConvertFrom时定义的格式不同就另当别论了),下面是例子:
[DefaultValue(typeof(Color),"White")]以及
[DefaultValue(typeof(Point),"{X=110,Y=120}")]等等...
二、使用ShouldSerialize<PropertyName>方法
这种方法的特殊性在于方法的命名上有约定,命名必须以ShouldSerialize开头,然后返回类型必须是bool类型,方法实现中要定义该属性的与缺省值的比较逻辑,如果设计器在调用这个方法之后返回true,就粗体显示属性值,这通常用于一些很复杂的类属性,如Font或自定义类型。另外,一般优良的设计都还同时实现Reset<PropertyName>方法,以在设计器中激活“重置”菜单项。
关于组件属性的特性设定请看我整理的《编写与.net属性窗口交互的RAD组件》
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值