日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳解ASP.NET自定義樣式屬性

位于WebControls命名空間的style類為頂級(jí)樣式類.大部分標(biāo)準(zhǔn)控件都擁有其樣式屬性.

1.下面為設(shè)置樣式方法

(1)你可以直接設(shè)置控件樣式

 
 
 
  1. Button1.BackColor = System.Drawing.Color.Red; 

(2)通過獲取web控件的樣式集合來設(shè)置

 
 
 
  1. Button1.ControlStyle.BackColor = System.Drawing.Color.Red; 

(3)通過設(shè)置樣式類,利用WebControl類的ApplyStyle方法來復(fù)制非空樣式,并改寫現(xiàn)有樣式

 
 
 
  1. myStyle.BackColor = System.Drawing.Color.Red;  
  2. Button1.ApplyStyle(myStyle); 

(4)一直定義樣式表屬性,不使用控件屬性,與定義HTML樣式相同.

 
 
 
  1. style="background-color: red" 

下面引出話題,為什么要使用樣式?大家知道定義樣式可以使用統(tǒng)一風(fēng)格,定義好的樣式,可以重復(fù)使用.再回來看上面設(shè)置樣式方法.

2.了解WebControl.BackColor和Style.BackColor

(1)和(2)是差不多的.但(3)則不同,(3)的定義方法有通用性,你可以定義一種樣式,然后利用控件的ApplyStyle方法來引用樣式.給樣式編程提供了方面

WebControl類定義了通用的樣式.(1)和(2)使用的樣式屬性與(3)不同

3.ASP.NET自定義樣式屬性

剛開始就講了style類為通用的頂級(jí)樣式類,但需求是會(huì)發(fā)生變化的. 好了,下面真正開始編碼了.
下面以改寫label控件為例子

(1)改寫樣式屬性,讓其默認(rèn)背景為紅色,相信大家一定看的懂

 
 
 
  1. namespaceCustomComponents  
  2. {  
  3. [ToolboxData(@"<{0}:ImageLabel1  
  4. BackColor='Red' 
  5. runat='server'>{0}:ImageLabel1>")  
  6. ]  
  7. publicclassImageLabel1:Label  
  8. {  
  9. publicoverridestringText  
  10. {  
  11. get{returnViewState["Text"]!=null?(string)ViewState["Text"]:base.ID;}  
  12. set{ViewState["Text"]=value;}  
  13. }  
  14.  
  15. publicoverrideSystem.Drawing.ColorBackColor  
  16. {  
  17. get  
  18. {  
  19. returnbase.BackColor=System.Drawing.Color.Red;  
  20. }  
  21. set  
  22. {  
  23. base.BackColor=value;  
  24. }  
  25. }  
  26. }  

(2)為label新增一個(gè)背景圖片的屬性,重寫了一下AddAttributesToRender方法,添加一個(gè)樣式屬性,AddAttributesToRender方法以前為大家講過,這里不多講了.

 
 
 
  1. namespaceCustomComponents  
  2. {  
  3. publicclassImageLabel2:Label  
  4. {  
  5. [BrowsableAttribute(true)]  
  6. [DescriptionAttribute("背景")]  
  7. [CategoryAttribute("Appearance")]  
  8. publicvirtualStringImageUrl  
  9. {  
  10. get{returnViewState["imageUrl"]!=null?(string)ViewState["imageUrl"]:"";}  
  11. set{ViewState["imageUrl"]=value;}  
  12. }  
  13. overrideprotectedvoidAddAttributesToRender(HtmlTextWriterwriter)  
  14. {  
  15. writer.AddStyleAttribute(HtmlTextWriterStyle.BackgroundImage,ImageUrl);  
  16. base.AddAttributesToRender(writer);  
  17. }  
  18. }  

(3)上面示例二中我們定義了背景樣式,其實(shí).net已經(jīng)為我們把工作做好了,從style類派生了很多樣式類,擴(kuò)展了style類的屬性,滿足不同控件樣式的需求.

(4)使用派生樣式類,定義控件樣式屬性.示例四中說過了,沒有定義控件樣式屬性,只改寫了CreateControlStyle方法.那就意味了你定義的控件樣式屬性可以直接使用TableStyle類中的屬性,但默認(rèn)情況下的樣式屬性為style類中屬性,所以需要強(qiáng)行轉(zhuǎn)換.

4.自定義類型化樣式屬性

如果樣式屬性無法滿足你需求,則你可以通過自定義類型化樣式來實(shí)現(xiàn).
什么是自定義類型化樣式?就是該類從style類派生,對(duì)其進(jìn)行修改和擴(kuò)充(書上就這么寫了...我就這么理解了-_-)

如Table控件,一方面控件ASP.NET自定義樣式屬性,另一方面又定義了TableStyle類.你可以在使用控件樣式屬性和TableStyle類中進(jìn)行選擇.

但TableStyle類具有通用性,具有一定的靈活性.好了下面我們又要開始看代碼了.當(dāng)然從簡(jiǎn)單開始

(1)簡(jiǎn)單呈現(xiàn)樣式屬性

需要說明的注意點(diǎn)如下
1.重寫LabelStyle(StateBag viewState)構(gòu)造函數(shù)
2.樣式屬性需用視圖狀態(tài)來聲明
3.Style類的重載的AddAttributesToRender方法需用兩個(gè)參數(shù)的方法
AddAttributesToRender(HtmlTextWriter writer, WebControl owner)

2)使用編程

下面我們以編程方式,給控件添加ASP.NET自定義樣式屬性。發(fā)現(xiàn)BackColor屬性能夠呈現(xiàn)但I(xiàn)mageUrl 無法呈現(xiàn),那說明我們剛才自定義的類就失去意義了,也說明我們還未重寫某個(gè)方法.

 
 
 
  1. protectedvoidPage_Load(objectsender,EventArgse)  
  2. {  
  3. //默認(rèn)label控件  
  4. TableStylea=newTableStyle();  
  5. a.BackImageUrl="images4.bmp";  
  6. a.BackColor=System.Drawing.Color.Red;  
  7. Label1.ApplyStyle(a);  
  8. //自定義控件  
  9. ImageLabel3_1.ApplyStyle(a);  

文章題目:詳解ASP.NET自定義樣式屬性
URL地址:http://m.5511xx.com/article/codgdis.html