自定义asp.net控件分析 (一)

** 自定义 asp.net控件分析 (一) **

前些日子,自己做了几个控件。想把自己对自定义控件的一些了解写出来,请大家多多发表自己对自定义控件制作的心得。

让我们能更好的动手制作自己所需功能的控件。

下面就以, .net自动生成的模版做一解释。(以vb语言为例)

1 .Imports System.ComponentModel

2 .Imports System.Web.UI

  1<defaultproperty("text"), runat="server" toolboxdata("<{0}:webcustomcontrol1=""><!--{0}:WebCustomControl1-->")&gt; 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("&lt;{0}:WebCustomControl1 runat=server&gt;<!--{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-->")&gt;
 44
 45Public  Class  WebCustomControl1定义类名为webcustomcontrol1,以后编译生成的dll名为webcustomtrol1 
 46
 47(  注意  :如果你修改  类名  。则需要修改{0}:后相对应的名字。例如:你把  类名  webcustomcontrol1改为  webcustom  。 
 48
 49则需要把  ToolboxData("&lt;{0}:WebCustomControl1 runat=server&gt;<!--{0}:WebCustomControl1-->")改成 
 50
 51ToolboxData("&lt;{0}:  webcustom  runat=server&gt;<!--{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"),>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus