2021-03-22

C#的attribute与属性窗的关系

attribute特性

特性,即attribute,是一种特殊的类,他们都继承自名为attribute的一个类;
C#中有许多预派生定义好的attribute类,我们可以直接拿来用,它们有丰富的功能,应用于不同场景;
我们也可以自定义一个attribute类,只要在定义时指定继承自attribute就可以了;

attribute与property

attribute可以用来修饰method方法、property属性、class类等,来达到某些特定的目的;
可见,attribute相对于property是一个从属关系。

attribute在propertyGrid属性窗中的应用

在winform程序里,当属性窗的selectObj属性选定某一个对象时,该对象的共有属性会显示在属性窗中。
如果我们对它的某些属性设置一些特性,就可以改变显示效果,如:
DisplayName:设置属性窗中显示的属性名字,如属性startPoint的该属性设置为开始点,增强可读性;
Description:选中属性时在下面的描述框里呈现Description中的描述内容;
Catagory:设置分类,当有多个属性要在属性窗中呈现时,该特性值相同的会排放在一起。

如何在属性窗中修改属性

只有绑定了类型转换器typeConverter特性的属性才能够在属性窗中直接修改;
一些常用的类型有windows自带的类型转换器,包括int、float、string这些的简单基本类型和color、font、size这样一部分复杂的类型等;
而对于没有自带类型转换器的大部分属性,则需要自定义一个类型转换器并绑定到属性上面;

如何自定义属性转换器

不管是类、结构体还是基本类型,都是不能直接显示在屏幕上的,而是转换成字符串的形式来显示;
所以typeConverter的基本思想就是以字符串为媒介,完成属性的显示;
以某个类为例,当显示类时,先将类的信息通过typeConverter的逻辑转换成字符串,然后显示在属性窗上;
当修改类时,修改的信息作为一个字符串str,通过typeConverter的逻辑拆分这个字符串,提取出类的信息,然后基于这些信息创建一个类,把这个类赋给要修改的类;
在自定义Type Converter时,必须重写四个函数:CanConvertFrom ConvertFrom CanConvertTo ConvertTo;
属性窗中的属性修改的格式均是由这个typeConverter来决定的。

常用的typeconverter

expandableObjectConverter

对类应用该特性后,会提供一个可展开的框,框里会有类的各属性信息,当然只有已经应用了typeConverter的属性才会正确显示,否则显示的是属性的toString形式。该类的主标题显示的是它的toString,可以重写它的toString来在expandableObjectConverter中表现出想要的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值