Asp.net的控件和windows 控件是有一定区别的。下面多数资料是以windows控件来讨论的,不过其实它们的原理都是相同的。
我们还是从正牌的 MSDN 开始
.NET Framework 使用组件编程
1. 讲述了组件和控件术语的定义和之间的区别。
2. 讲述了扩展设计时支持,就是让你的控件或组件能在VS里面进行属性等设计(定义)提供给使用者支持(比如:UI显示方面)- 这一节是进行asp.net服务器控件编程或者是.net windows窗体编程必读,当然,尽管你可以编写一些控件而不提供设计时支持,但去了解和学习一下,可以明白一些微软在Visual Studio(平台上面是如何来支持设计)
这张图片也出现在《道不远人 asp.net控件编程》里面,大家了解一下
3. 里面包括了关于.net windows窗体控件和asp.net服务器控件的内容。
设计时结构
这部分谈到了属性(Attribute),设计器,类型转换器,UI编辑器,设计时服务等重要概念。
1. 讲述了组件和控件术语的定义和之间的区别。
2. 讲述了扩展设计时支持,就是让你的控件或组件能在VS里面进行属性等设计(定义)提供给使用者支持(比如:UI显示方面)- 这一节是进行asp.net服务器控件编程或者是.net windows窗体编程必读,当然,尽管你可以编写一些控件而不提供设计时支持,但去了解和学习一下,可以明白一些微软在Visual Studio(平台上面是如何来支持设计)
这张图片也出现在《道不远人 asp.net控件编程》里面,大家了解一下
3. 里面包括了关于.net windows窗体控件和asp.net服务器控件的内容。
设计时结构
这部分谈到了属性(Attribute),设计器,类型转换器,UI编辑器,设计时服务等重要概念。
其中会涉及到TypeDescriptor, 它提供有关组件属性 (Attribute) 的信息,如组件的属性 (Attribute)、属性 (Property) 和事件。无法继承此类。
请注意,组件的属性 (Attribute)、属性 (Property)的两个概念. 它们是不同的,虽然都被翻译成为属性. 我一直把属性(attribute)称为标签属性,因为它总是去描述某个组件,类型,事件的什么什么(类似物价标签,描述什么产地,品质等等)
请看代码里面,类似
[TypeConverter(typeof(ImageIndexConverter2)),
Editor(typeof(ImageIndexEditor2),typeof(UITypeEditor))]
就是标签属性
1: [TypeConverter(typeof(ImageIndexConverter2)),
2: Editor(typeof(ImageIndexEditor2),typeof(UITypeEditor))]
3: public int ImageIndex
4: {
5: get { return _imageindex; }
6: set { _imageindex = value; }
7: }
而ImageIndex也是属性(property), 所以看到这里大家可以区分出来.
通过TypeDescriptor我们可以获得一个类型或组件的, PropertyDescriptor,EventDescriptor (但没有AttributeDescriptor)
*注意
visual studio 本身就一个应用程序,也是一个平台,我们在设计组件的只要遵从它定义的机制,就可以提供设计时的支持,在这种机制里面,它使用了反射的特性。特别是UI类型编辑器和设计器中使用比较多。
visual studio 本身就一个应用程序,也是一个平台,我们在设计组件的只要遵从它定义的机制,就可以提供设计时的支持,在这种机制里面,它使用了反射的特性。特别是UI类型编辑器和设计器中使用比较多。
入门和例子
-
.NET组件编程(1) 基础
-
.NET组件编程(2) PropertyAttribute和EventAttribute
- .NET组件编程(3) Property Editor
- .NET组件编程(4) 用户自定义Property Editor的调试
- .NET组件编程(5) TypeConverterAttribute,类型转换
- .NET组件编程(6) Component Designer
- .NET组件编程(7) Component DesignerAction(智能标记)
- .NET组件编程(8) Component DocumentDesigner(文档设计器)
- .NET组件编程(9) 结束篇
- .NET组件编程(10) 补充 ISupportInitialize