前些日子,自己做了幾個控件。想把自己對自定義控件的一些了解寫出來,請大家多多發表自己對自定義控件制作的心得。
讓我們能更好的動手制作自己所需功能的控件。
下面就以,.Net自動生成的模版做一解釋。(以vb語言為例)
1.Imports System.ComponentModel
2.Imports System.Web.UI
3.
4. Inherits System.Web.UI.WebControls.WebControl
5. Dim _text As String
6.
7. Get
8. Return _text
9. End Get
10. Set(ByVal Value As String)
11. _text = Value
12. End Set
13. End Property
14. Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
15. output.Write([Text])
16. End Sub
17.End Class
'---------------------------------------------------------------
'1-2 導入命名空間,System.ComponentModel和 System.Web.UI 這沒什麼好介紹的
'3 DefaultProperty("Text")--指定屬性的默認值。如果用此屬性需要導入(命名空間: System.ComponentModel)
ToolboxData("<{0}:WebCustomControl1 runat=server>")
指定當從 Visual Studio 等工具中的工具箱拖動自定義控件時為它生成的默認標記。
在下面的示例中,設置特定於 MyLabel 的若干屬性。{0} 的所有匹配項都由設計器替換為與 MyLabel 類關聯的標記前綴。
Public Class WebCustomControl1定義類名為webcustomcontrol1,以後編譯生成的dll名為webcustomtrol1
(注意:如果你修改類名。則需要修改{0}:後相對應的名字。例如:你把類名webcustomcontrol1改為webcustom。
則需要把ToolboxData("<{0}:WebCustomControl1 runat=server>")改成
ToolboxData("<{0}:webcustom runat=server>") 否則編譯後將出錯。)
'4 Inherits 表示繼承。這裡是繼承System.Web.UI.WebControls.WebControl的方法,屬性,事件等。
'6 這句主要是控制自定義控件在’屬性浏覽器‘中的顯示,先解釋模版的句子,再擴展開講
Property [Text]() As String定義 text屬性 為字符串類型
Bindable(True)指定是否要綁定到該屬性。-True為是,False為不
Category("Appearance") --text屬性將顯示在外觀組中。指定類別的名稱,在該類別中將對屬性或事件進行分組。當使用了類別時,組件屬性和事件可以按邏輯分組顯示在屬性浏覽器中。
DefaultValue("")為屬性設置一個簡單的默認值。這裡為空
下面列出所有的特性
$False$詳細資料可查看ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/Html/cpcondesign-timeattributesforcomponents.htm
屬性
應用於
說明
BrowsableAttribute
屬性和事件
指定屬性或事件是否應該顯示在屬性浏覽器中。
CategoryAttribute
屬性和事件
指定類別的名稱,在該類別中將對屬性或事件進行分組。當使用了類別時,組件屬性和事件可以按邏輯分組顯示在屬性浏覽器中。
DescriptionAttribute
屬性和事件
定義一小塊文本,該文本將在用戶選擇屬性或事件時顯示在屬性浏覽器底部。
BindableAttribute
屬性
指定是否要綁定到該屬性。
DefaultPropertyAttribute
屬性
(將此特性插入類聲明前。)
指定組件的默認屬性。當用戶單擊控件時,將在屬性浏覽器中選定該屬性。
DefaultValueAttribute
屬性
為屬性設置一個簡單的默認值。
EditorAttribute
屬性
指定在可視設計器中編輯(更改)屬性時要使用的編輯器。
LocalizableAttribute
屬性
指定屬性應本地化。當用戶要本地化某個窗體時,任何具有該特性的屬性都將自動永久駐留到資源文件中。
DesignerSerializationVisibilityAttribute
屬性
指定顯示在屬性浏覽器中的屬性是否應該(以及如何)永久駐留在代碼中。
TypeConverterAttribute
屬性
指定將屬性的類型轉換為另一個數據類型時要使用的類型轉換器。
DefaultEventAttribute
事件
(將此特性插入類聲明前。)
指定組件的默認事件。這是當用戶單擊組件時在屬性浏覽器中選定的事件。
.Net中還支持自定義特性,這裡就不說,有興趣的可以去查msdn,上面有詳細說明
可參考ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/Html/cpconwritingcustomattributes.htm
7-12很簡單,意思就是返回(Get)Text屬性的值和設置(Set)Text屬性的值
13 Text屬性的結束
14-16 這個過程作用是重寫控件的呈現。這裡是在頁面上顯示Text屬性的值
這裡只是簡單介紹了一下自定義控件。我將在下一篇裡,用例子來具體介紹自定義控件中的屬性、方法、事件。