1.
定義屬性
public
的property
將在設計時控制項的屬性視窗中顯示,新增各種型別的
attribute
可以影響屬性的展現形式和持久化形式。
browsableattribute
:指定乙個屬性或事件是否應顯示在「屬性
」視窗中;
categoryattribute
:應用到屬性或事件,指定屬性或事件在屬性瀏覽器中列出時所處的類別;
descriptionattribute
:應用於屬性或事件,指定在屬性瀏覽器中顯示的對屬性或事件的說明。
designonlyattribute
:應用於屬性,指定是否只能在設計時設定屬性。
readonlyattribute
:應用於屬性,指定在設計時屬性是唯讀還是可讀/寫。
bindableattribute
:確定屬性是否適合資料繫結器進行繫結;
persistencemodeattribute
:定義指定如何將
asp.net
伺服器控制項屬性或事件保持到
asp.net
頁的元資料屬性。
innerproperty
:指定屬性作為伺服器控制項的開始和結束標記內部的巢狀標記保持。如下面例中的
headerstyle;
designerserializationvisibilityattribute
:指定在設計時序列化元件上的屬性時所使用的永續性型別。
content
:**生成器產生物件內容的**,而不是物件本身的**。
hidden
:**生成器不生成物件的**。
visible
:**生成器生成物件的**。如下面例中的
tablestyle。
notifyparentpropertyattribute
:指示當此屬性應用到的屬性的值被修改時將通知父屬性。如果屬性的父屬性應該在該屬性值更改時接到通知,則向該屬性應用
notifyparentpropertyattribute。
mergablepropertyattribute
:在屬性瀏覽器中當多個元件被瀏覽和選中時,允許或阻止包含某屬性。
designtimevisibleattribute
:是否在設計器上顯示該元件。
toolboxitemattribute
:是否在工具箱中顯示該元件,或指定顯示的工具箱名稱
/型別。
2.
呈現伺服器控制項
重寫render
以將html
(或其他標記內容)作為字串引數傳遞到htmltextwriter
的例項的write
方法。control
基類提供renderchildren
方法以從其子控制項(如果有)呈現內容。
system.web.ui.webcontrols.webcontrol
類還提供其他幾個方法來便於呈現:
addattributestorender
方法新增需要呈現的
html
屬性和樣式;
renderbegintag
和renderendtag
方法重寫開始和結束
html
元素標記;
rendercontents
方法指定標記內的內容。
isite.designmode
屬性:確定元件在由類實現時是否處於設計模式。實際使用時用
if ( (this.page != null) && (this.page.site != null) && this.page.site.designmode )
判斷3.
定義事件
定義儲存事件資料的類,繼承
system.eventargs
(在控制項之外定義);
定義事件委託,繼承
system.eventhandler
(在控制項之外定義);
在控制項中定義的事件成員。該成員由event
關鍵字標識
呼叫委託的控制項中的方法(例如:onclick、ontextchanged)。
4.
生成和捕獲回發事件
控制項實現
ipostbackeventhandler
介面,允許控制項在伺服器上引發事件來響應來自客戶端的回發。
生成:用方法
page
的getpostbackclienthyperlink
生成伺服器回發事件的超連結。引數為處理回發的伺服器控制項和傳遞給伺服器控制項的引數。
捕獲:在控制項的
ipostbackeventhandler.raisepostbackevent
方法中處理回發事件。
5.
開發復合控制項
inamingcontainer
:標記介面,為每個子伺服器控制項建立新
id 命名空間 使用
createchildcontrols
建立子控制項
「事件冒泡
」的技術,允許子控制項將事件沿其包容層次結構向上傳播。
raisebubbleevent
沿層次結構向上將事件資料傳送到控制項的父級。若要處理或引發冒泡的事件,控制項必須重寫
onbubbleevent
方法。
6.
型別轉換
typeconverterattribute
指定用作此特性所繫結到的物件的轉換器的型別。帶有該屬性的類可以儲存在
viewstate
中。給屬性新增
attribute
:[typeconverter(typeof(customerconverter))]
。用於轉換的類必須從
typeconverter
繼承。簡單定義可重寫以下方法:
canconvertfrom
、canconvertto
、convertfrom 和
convertto。
7.
屬性的編輯器
要自動運用集合編輯器。屬性的型別必須實現
llist
介面,並定義好
add和
delete
方法,方法的引數須宣告為正確的型別。
自定義設計時
ui
使用editorattribute
指定用來更改屬性的編輯器。給屬性新增
attribute
:[editorattribute(typeof(customereditor), typeof(system.drawing.design.uitypeeditor))]
定義乙個從
system.drawing.design.uitypeeditor
派生的類。 重寫
editvalue
方法以處理使用者介面、使用者輸入操作以及值的分配。用
provider.getservice(typeof(iwindowsformseditorservice))
得到顯示
windows
窗體,或者在設計模式下在屬性網格控制項的下拉區域中顯示控制項的
iwindowsformseditorservice
:closedropdown
關閉所有以前開啟的下拉控制項區域。
dropdowncontrol
在提供此服務的屬性網格的值字段下方的下拉區域中顯示指定控制項。
showdialog
顯示指定的
form。
重寫geteditstyle
方法,將編輯器將使用的編輯器樣式的型別通知給「屬性」視窗。返回值為
uitypeeditoreditstyle
:dropdown
:顯示向下箭頭按鈕,而且該使用者介面將在乙個下拉對話方塊中承載。
modal
:顯示省略號
(...)
按鈕,該按鈕用於啟動模式對話方塊或有視窗的對話方塊。
none
:不提供任何互動使用者介面
(ui)
元件。
sdk:
ms-help://ms.netframeworksdkv1.1.chs/cpguidenf/html/cpconservercontrolssamples.htm
伺服器控制項
本章學習了asp.nte頁面的乙個核心構造塊 伺服器控制項。伺服器控制項是一種用於頁面開發的物件導向方法,它把頁面元素封裝到可修改和可擴充套件的元件中。伺服器控制項型別包括 web伺服器控制項和html伺服器控制項 web伺服器控制項的2個特點 必須有id和runat server html元素加上...
HTMl伺服器控制項和WEB伺服器控制項 二
htmlcontrol 所有的html伺服器控制項都繼承自htmlcontrol類。該類分為三種型別 htmlinputcontrol 輸入控制項 htmlcontainercontrol 容器控制項 htmlimage 控制項 htmlcontrol繼承自system.web.ui.control...
Validation 伺服器控制項
validation 伺服器控制項用於驗證輸入控制項的資料。如果資料未通過驗證,則向使用者顯示錯誤訊息。validation 伺服器控制項 描述comparevalidator 把乙個輸入控制項的值與另乙個輸入控制項或乙個固定的值進行對比。customvalidator 允許您編寫乙個方法,來處理輸...