** 自定义 asp.net控件分析 (一) **
前些日子,自己做了几个控件。想把自己对自定义控件的一些了解写出来,请大家多多发表自己对自定义控件制作的心得。
让我们能更好的动手制作自己所需功能的控件。
下面就以, .net自动生成的模版做一解释。(以vb语言为例)
1 .Imports System.ComponentModel
2 .Imports System.Web.UI
1<defaultproperty("text"), runat="server" toolboxdata("<{0}:webcustomcontrol1=""><!--{0}:WebCustomControl1-->")> Public Class WebCustomControl1
2
34\. Inherits System.Web.UI.WebControls.WebControl
4
55\. Dim _text As String
6
76\. <bindable( ),="" category("str"),="" defaultvalue("11111")="" true=""> Property [Text]() As String
8
97\. Get
10
118\. Return _text
12
139\. End Get
14
1510\. Set ( ByVal Value As String )
16
1711\. _text = Value
18
1912\. End Set
20
2113\. End Property
22
2314\. Protected Overrides Sub Render( ByVal output As System.Web.UI.HtmlTextWriter)
24
2515\. output.Write([Text])
26
2716\. End Sub
28
2917 .End Class
30
31'---------------------------------------------------------------
32
33'1-2 导入命名空间,System.ComponentModel和 System.Web.UI 这没什么好介绍的
34
35'3 DefaultProperty("Text")--指定属性的默认值。如果用此属性需要导入(命名空间: System.ComponentModel)
36
37ToolboxData("<{0}:WebCustomControl1 runat=server><!--{0}:WebCustomControl1-->")
38
39指定当从 Visual Studio 等工具中的工具箱拖动自定义控件时为它生成的默认标记。
40
41在下面的示例中,设置特定于 MyLabel 的若干属性。{0} 的所有匹配项都由设计器替换为与 MyLabel 类关联的标记前缀。
42
43<toolboxdata("<{0}:mylabel backcolor="Magenta" bordercolor="Yellow" borderwidth="10" runat="server" text="MyLabel"><!--{0}:MyLabel-->")>
44
45Public Class WebCustomControl1定义类名为webcustomcontrol1,以后编译生成的dll名为webcustomtrol1
46
47( 注意 :如果你修改 类名 。则需要修改{0}:后相对应的名字。例如:你把 类名 webcustomcontrol1改为 webcustom 。
48
49则需要把 ToolboxData("<{0}:WebCustomControl1 runat=server><!--{0}:WebCustomControl1-->")改成
50
51ToolboxData("<{0}: webcustom runat=server><!--{0}: webcustom -->") 否则编译后将出错。)
52
53'4 Inherits 表示继承。这里是继承System.Web.UI.WebControls.WebControl的方法,属性,事件等。
54
55'6 这句主要是控制自定义控件在’属性浏览器‘中的显示,先解释模版的句子,再扩展开讲
56
57Property [Text]() As String定义 text属性 为字符串类型
58
59Bindable(True)指定是否要绑定到该属性。-True为是,False为不
60
61Category("Appearance") --text属性将显示在外观组中。指定类别的名称,在该类别中将对属性或事件进行分组。当使用了类别时,组件属性和事件可以按逻辑分组显示在属性浏览器中。
62
63DefaultValue("")为属性设置一个简单的默认值。这里为空
64
65下面列出所有的特性
66
67详细资料可查看 ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpcondesign-timeattributesforcomponents.htm
68
69** 属性 ** ** **
70
71|
72
73** 应用于 ** ** **
74
75|
76
77** 说明 ** ** **
78
79---|---|---
80
81BrowsableAttribute
82
83|
84
85属性和事件
86
87|
88
89指定属性或事件是否应该显示在属性浏览器中。
90
91CategoryAttribute
92
93|
94
95属性和事件
96
97|
98
99指定类别的名称,在该类别中将对属性或事件进行分组。当使用了类别时,组件属性和事件可以按逻辑分组显示在属性浏览器中。
100
101DescriptionAttribute
102
103|
104
105属性和事件
106
107|
108
109定义一小块文本,该文本将在用户选择属性或事件时显示在属性浏览器底部。
110
111BindableAttribute
112
113|
114
115属性
116
117|
118
119指定是否要绑定到该属性。
120
121DefaultPropertyAttribute
122
123|
124
125属性
126
127(将此特性插入类声明前。)
128
129|
130
131指定组件的默认属性。当用户单击控件时,将在属性浏览器中选定该属性。
132
133DefaultValueAttribute
134
135|
136
137属性
138
139|
140
141为属性设置一个简单的默认值。
142
143EditorAttribute
144
145|
146
147属性
148
149|
150
151指定在可视设计器中编辑(更改)属性时要使用的编辑器。
152
153LocalizableAttribute
154
155|
156
157属性
158
159|
160
161指定属性应本地化。当用户要本地化某个窗体时,任何具有该特性的属性都将自动永久驻留到资源文件中。
162
163DesignerSerializationVisibilityAttribute
164
165|
166
167属性
168
169|
170
171指定显示在属性浏览器中的属性是否应该(以及如何)永久驻留在代码中。
172
173TypeConverterAttribute
174
175|
176
177属性
178
179|
180
181指定将属性的类型转换为另一个数据类型时要使用的类型转换器。
182
183DefaultEventAttribute
184
185|
186
187事件
188
189(将此特性插入类声明前。)
190
191|
192
193指定组件的默认事件。这是当用户单击组件时在属性浏览器中选定的事件。
194
195.net中还支持自定义特性,这里就不说,有兴趣的可以去查msdn,上面有详细说明
196
197可参考 ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconwritingcustomattributes.htm
198
1997-12很简单,意思就是返回(Get)Text属性的值和设置(Set)Text属性的值
200
20113 Text属性的结束
202
20314-16 这个过程作用是重写控件的呈现。这里是在页面上显示Text属性的值
204
205这里只是简单介绍了一下自定义控件。我将在下一篇里,用例子来具体介绍自定义控件中的属性、方法、事件。</toolboxdata("<{0}:mylabel></bindable(></defaultproperty("text"),>