昨天花了一整天的时间把公司的常用的图片按钮写成了一个小控件,叫MyImageButton。其中涉及到了如何将控件的属性暴露到VS.net的属性面板,以及如何显示可折叠属性的一些技术:
1. 将控件的属性暴露在属性面板:
实际上VS.NET会默认地将控件的所有的public属性(注意是Property不是Field)暴露到属性面板上。另外你还可以为某个属性指定默认值和出现在哪个分类里。下面是几个常用的Attribute:
CatalogAttribute(string catalog)
DefaultValueAttribute(object defaultValue)
DescriptionAttribute(string description)
TypeConverter(Type typeof(converterClass)) // 主要用于给自定义类型的属性实现到字符串的转换,这样属性面板才可以正常的显示属性的内容。
2. 为某个属性关联编辑器:
可以通过EditorAttribute为属性关联一个属性编辑器。如:
Editor("System.Web.UI.Design.ImageUrlEditor, System.Design", typeof(System.Drawing.Design.UITypeEditor)
通过这个属性可以关联一个ImageUrlSelector来选择图片,设置图片的Url.
3. 创建一个在属性面板中可折叠的属性:
这个比较复杂(这里就偷懒了:),主要是用到了DesignerSerializationVisibilityAttribute和ExpandableObjectConverter。
具体的可以参考:
http://support.microsoft.com/default.aspx?scid=kb;en-us;324301