|
繼續(xù)我們的話(huà)題吧.自定義控件.如果你還不熟悉自定義控件開(kāi)發(fā)的話(huà),還請(qǐng)看看我以前寫(xiě)了幾篇,希望對(duì)你有幫助
1.1何處繼承
自定義控件一般從以下幾個(gè)基類(lèi)(此處不包含數(shù)據(jù)控件)
一.Control類(lèi)(所有服務(wù)器控件的基類(lèi),算是比較底層的類(lèi),如果控件功能比較簡(jiǎn)單,要求不多,可直接繼承此類(lèi).)
二.WebControl類(lèi)(標(biāo)準(zhǔn)控件的基類(lèi),繼承此類(lèi),你可以繼承其豐富的公共屬性,若標(biāo)準(zhǔn)控件中的控件沒(méi)有你需要的控件,你可以繼承此類(lèi))
三.CompositeControl 類(lèi)(2.0新增的類(lèi),此類(lèi)繼承自WebControl類(lèi),如果你需要制作復(fù)合控件,請(qǐng)從繼承此類(lèi)開(kāi)始)
四.直接從內(nèi)置控件繼承(我們知道輪子只需要發(fā)明一遍,你的需求跟內(nèi)置差不多的話(huà),請(qǐng)考慮這么做)
1.2呈現(xiàn)控件
Control類(lèi)Render方法為基本呈現(xiàn)方法,RenderContent方法是在Render方法之上的,其為控件加了一個(gè)標(biāo)簽,我認(rèn)為RenderContent方法是為WebControl類(lèi)中屬性準(zhǔn)備的.基本的方法繼續(xù)深刻的去了解.
1.3與用戶(hù)交互
純粹的呈現(xiàn)控件還不夠,我們需要傳遞數(shù)據(jù),這就必然讓我們了解自定義控件事件處理
1.4接觸屬性(見(jiàn)第五,九,十篇)
屬性相對(duì)而言比較簡(jiǎn)單,也比較好理解,但其又比較麻煩,當(dāng)控件屬性太多,很容易亂,因此我們又認(rèn)識(shí)了元數(shù)據(jù)。把屬性進(jìn)行了分類(lèi),如下圖
為了更清晰了,把屬性分好類(lèi)別,我們又用另外做法,把多種同類(lèi)型的屬性,定義在一個(gè)大的屬性里面,稱(chēng)之為復(fù)雜屬性,如下圖
屬性已經(jīng)夠多了,不緊如此,我們還知道屬性的每種類(lèi)型可能不一樣,而在呈現(xiàn)之后都是呈現(xiàn)字符串形式,簡(jiǎn)單屬性.NET已為你處理好轉(zhuǎn)換,當(dāng)你自定義復(fù)雜屬性以后,你則需要自己為你定義的復(fù)雜屬性定義一個(gè)類(lèi)型轉(zhuǎn)換器(見(jiàn)第九篇)。屬性還有另外一種做法,就是可以把屬性當(dāng)成集合屬性來(lái)用.可以說(shuō)是特殊話(huà)的復(fù)雜控件,這樣做可以提供給一些列表控件使用(見(jiàn)第10篇) 屬性用途還真不少
1.5控件樣式
控件怎么能缺樣式,我們自然需要它,在此我們?cè)俅握J(rèn)識(shí)到了WebControl類(lèi).當(dāng)然也了解到了Style類(lèi)及其子類(lèi),只要你了解了其中的幾個(gè)方法你就可以自定義控件樣式了
1.6復(fù)合控件
復(fù)合控件的功能往往比較強(qiáng)大,它利用當(dāng)前已經(jīng)存在的控件進(jìn)行組裝成一個(gè)新的控件,在此過(guò)程中我們學(xué)習(xí)了在復(fù)合控件中定義事件以及定義樣式.
1.7視圖狀態(tài)
不得不談的一個(gè)話(huà)題,一般我們?yōu)榭丶x的屬性都以視圖狀態(tài)的形式保存,然而復(fù)雜屬性的定義和控件樣式定義則需要你了解如何自定義視圖狀態(tài)。
最后我們還討論了如何為控件添加客戶(hù)端功能,還有為控件定義生成器。好了,總結(jié)終于告一段落,以上寫(xiě)了兩遍,第一遍寫(xiě)的時(shí)候保存后數(shù)據(jù)居然丟失了,痛苦啊。
下面我們分享一些小技巧,或許大家早已經(jīng)知道了,為了以后更好的學(xué)習(xí),我把命名控件全部更改為ASPDemo.CustomComponents。此次下載的源碼包括1-16篇的全部的示例代碼,如果有什么錯(cuò)誤還請(qǐng)大家指出。
補(bǔ)充
一.嵌入資源的使用
1.嵌入控件圖標(biāo)
內(nèi)置控件都有自己的圖標(biāo),很多人也很喜歡為自己的控件做個(gè)圖標(biāo),那如何做呢?
我們只需要使用ToolboxBitmap元數(shù)據(jù)就可以了,你需要了解其構(gòu)造函數(shù),用法如下







NET技術(shù):asp.net控件開(kāi)發(fā)基礎(chǔ)(15),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。