成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET控件設(shè)計(jì)時支持淺析

開發(fā) 后端
ASP.NET控件設(shè)計(jì)時支持是什么呢?ASP.NET控件設(shè)計(jì)時支持是人們喜歡.NET的原因之一,那么本文就向你簡單介紹ASP.NET控件設(shè)計(jì)時支持的內(nèi)容。

ASP.NET控件設(shè)計(jì)時支持是什么呢?大家好象對控件設(shè)計(jì)時的討論不多,是不是感覺功能實(shí)現(xiàn)就可以了,當(dāng)然設(shè)計(jì)時支持是可有可無的.我敢說沒有設(shè)計(jì)時支持的話,可能很多人不喜歡.net,正因?yàn)橛性O(shè)計(jì)時支持,更降低了.net學(xué)習(xí)的門檻.這次就簡單的來看看,如果簡單的實(shí)現(xiàn)你常用的幾個功能.

ASP.NET控件設(shè)計(jì)時支持一.ControlDesigner類

ControlDesigner作為web服務(wù)器控件的設(shè)計(jì)器的基類,你可以擴(kuò)展此類. 總之你了解這個類以后你會發(fā)現(xiàn)原來你平時看到的控件能夠在VS2005設(shè)計(jì)時中完美的呈現(xiàn)也是微軟幫你做的.既然如此,作為一個完美的控件也應(yīng)該配有設(shè)計(jì)時的支持,有時候可以讓開發(fā)達(dá)到事半功倍的效果.這里先不介紹這個類其中具體的方法和屬性了.我們接了會具體使用的.

ASP.NET控件設(shè)計(jì)時支持二.獲取設(shè)計(jì)時關(guān)聯(lián)控件HTML

(1) 定義控件

讓我們來定義兩個最簡單的控件

  1. public class DesginControl : Control  
  2.   {  
  3.  
  4.       public string Text  
  5.       {  
  6.           get 
  7.           {  
  8.               String s = (String)ViewState["Text"];  
  9.               return ((s == null) ? String.Empty : s);  
  10.           }  
  11.  
  12.           set 
  13.           {  
  14.               ViewState["Text"] = value;  
  15.           }  
  16.       }  
  17.       protected override void Render(HtmlTextWriter writer)  
  18.       {  
  19.           writer.Write(Text);  
  20.       }  
  21.   }  
  22.  
  23.   public class DesginWebControl :WebControl  
  24.   {  
  25.       public string Text  
  26.       {  
  27.           get 
  28.           {  
  29.               String s = (String)ViewState["Text"];  
  30.               return ((s == null) ? String.Empty : s);  
  31.           }  
  32.  
  33.           set 
  34.           {  
  35.               ViewState["Text"] = value;  
  36.           }  
  37.       }  
  38.       protected override void RenderContents(HtmlTextWriter writer)  
  39.       {  
  40.           writer.Write(Text);  
  41.       }  
  42.   } 

(2)第一次測試

好了,兩個控件一個派生自Control,一個派生于WebControl,編譯后把他們一起拖到設(shè)計(jì)器上吧,看看效果

WebControl 

DesignControl在Text屬性為空的時候,即沒有呈現(xiàn)任何內(nèi)容的時候,設(shè)計(jì)器上會出現(xiàn)上面這樣的文字

DesignWebControl更離譜,看到DesignWebControl文字右邊的小方框了沒,這個就是其默認(rèn)呈現(xiàn)的效果.

(2)第二次測試

下面再次給他們兩加上Text屬性后的效果,再看效果

加上Text屬性 

DesignControl顯示效果很好,

DesignWebControl也可以達(dá)到跟DesignControl一樣的效果,但多了項(xiàng)功能.

其可以允許在設(shè)計(jì)器中自動的拖拉控件改變控件的寬度和高度,看到右下腳的鼠標(biāo)和控件中間控件的115和42沒.很不幸DesignControl沒有這樣的功能.為什么呢?

(4)第三次測試

我們再來最后的一次測試.我們再次將Text屬性的內(nèi)容去掉

效果如下

將Text屬性的內(nèi)容去掉 

DesignControl恢復(fù)回來了,不好的是DesignWebControl成了一白板:)

(6)解決方案來了

其實(shí)上面的這兩個控件跟Literal和Label控件像極了,其本身使用一點(diǎn)問題也沒有,為了設(shè)計(jì)時更好看,也為了保護(hù)我們的眼睛看的舒服點(diǎn):),我們能做點(diǎn)什么.

一切的一切都是因?yàn)?net提供了設(shè)計(jì)時支持,不然的話,恐怕你連上面的幾個界面也看不到了.還好我們可以自己來改變它.那便是利用.net的設(shè)計(jì)時支持.

(7)每個控件都應(yīng)該有各自的設(shè)計(jì)時支持

不知道這句話,大家是否認(rèn)同,即使控件現(xiàn)在可能不需要,但請做好以后的準(zhǔn)備,先空定義一個也可以

下面我們討論下label控件.

7.1當(dāng)Text屬性為空時,設(shè)計(jì)器呈現(xiàn)為"["加控件ID的值"]",如[Label1],注意這個是設(shè)計(jì)器呈現(xiàn),而非生成的效果呈現(xiàn).

7.2Control類沒有width和height屬性,當(dāng)然設(shè)計(jì)時也就不支持更改了.

(8)實(shí)現(xiàn)

上面說了一大堆廢話,還是來看看如何實(shí)現(xiàn)吧

  1. public class DesginWebControlDesigner : ControlDesigner  
  2.     {  
  3.         private DesginWebControl webControl;  
  4.  
  5.         public DesginWebControlDesigner()  
  6.         { }  
  7.  
  8.         //初始化控件設(shè)計(jì)器  
  9.         public override void Initialize(IComponent ponent)  
  10.         {  
  11.             base.Initialize(ponent);  
  12.  
  13.  
  14.             webControl = (DesginWebControl)ponent;  
  15.             webControl.Text = "DesginWebControl";  
  16.               
  17.         }  
  18.  
  19.         //調(diào)整控件的大小  
  20.         public override bool AllowResize  
  21.         {  
  22.             get 
  23.             {  
  24.                 return false;  
  25.             }  
  26.         }  
  27.  
  28.         //獲取設(shè)計(jì)器HTML  
  29.         public override string GetDesignTimeHtml()  
  30.         {  
  31.             if (webControl.Text.Length ﹥ 0)  
  32.             {  
  33.                 string spec = "﹤font color='red'﹥{0}﹤/font﹥";  
  34.                 return String.Format(spec, webControl.Text);  
  35.             }  
  36.             else 
  37.                 return GetEmptyDesignTimeHtml();  
  38.         }  
  39.  
  40.         //定義一個空的實(shí)現(xiàn)  
  41.         protected override string GetEmptyDesignTimeHtml()  
  42.         {  
  43.             string spec = "[{0}]";  
  44.             return String.Format(spec, webControl.ID);  
  45.         }  
  46.     } 

(1)Initialize方法初始化控件設(shè)計(jì)時的狀態(tài)

(2)AllowResize屬性默認(rèn)為True,設(shè)置為False,控件就無法在設(shè)計(jì)器了調(diào)整控件大小了

(3)GetDesignTimeHtml方法 最終獲取控件在設(shè)計(jì)器中的狀態(tài)

(4)GetEmptyDesignTimeHtml方法 定義一個空的實(shí)現(xiàn)

定義好以后再將控件與設(shè)計(jì)器關(guān)聯(lián)起來

  1. [Designer(typeof(DesginWebControlDesigner))]  
  2. public class DesginWebControl :WebControl  
  3. {  

好了,現(xiàn)在就可以來測試下了

測試 

效果跟定義的一樣,這個就是設(shè)計(jì)時的效果了,當(dāng)然生成的頁面可不是這樣的,這個要區(qū)分清楚.

這時我們再來修改Text屬性,和控件的BackColor屬性,發(fā)現(xiàn)Text改變了,BackColor屬性在更改后設(shè)計(jì)器效果不變.

注意點(diǎn):

(1)GetDesignTimeHtml方法呈現(xiàn)的將是控件設(shè)計(jì)器上最終的效果,使用時,你無法更改在此方法定義的效果,Initialize方法初始化的效果可以更改.

(2)頁面呈現(xiàn)效果與設(shè)計(jì)器呈現(xiàn)效果不一定相同

講了這么多就講了最基礎(chǔ)的東西,很容易理解的東西,大家可以了解下.

ASP.NET控件設(shè)計(jì)時支持相關(guān)的內(nèi)容就向你介紹到這里,希望對你了解ASP.NET控件設(shè)計(jì)時支持有所幫助。

【編輯推薦】

  1. ASP.NET控件開發(fā)基礎(chǔ)之服務(wù)器控件客戶端功能
  2. ASP.NET控件開發(fā)之控件生成器淺析
  3. ASP.NET控件開發(fā)基礎(chǔ)的總結(jié)詳解
  4. ASP.NET模板控件開發(fā)淺析
  5. ASP.NET數(shù)據(jù)綁定控件開發(fā)淺析
責(zé)任編輯:仲衡 來源: 博客園
相關(guān)推薦

2009-08-07 17:09:24

ASP.NET控件設(shè)計(jì)時支持

2009-08-07 17:49:44

控件設(shè)計(jì)器

2009-08-07 17:17:43

ASP.NET控件設(shè)計(jì)

2009-08-07 17:59:35

控件設(shè)計(jì)器

2009-07-27 17:25:53

ASP.NET驗(yàn)證控件

2009-08-07 15:24:16

ASP.NET模板控件

2009-08-05 16:53:14

ASP.NET組件設(shè)計(jì)

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2009-08-04 17:28:45

Apache支持ASP

2009-07-24 09:57:25

ASP.NET HTM

2009-08-07 15:34:15

ASP.NET數(shù)據(jù)綁定

2009-08-04 15:20:59

ASP.NET數(shù)據(jù)驗(yàn)證數(shù)據(jù)驗(yàn)證控件

2009-07-28 16:21:03

Asp.net AjaAutoComplet

2009-08-06 18:18:27

ASP.NET控件開發(fā)ASP.NET復(fù)合控件

2009-08-06 15:21:45

ASP.NET控件開發(fā)RenderConte

2009-08-06 17:13:56

ASP.NET自定義控

2009-08-03 18:00:00

ASP.NET服務(wù)器控

2009-11-26 09:02:59

ASP.NET數(shù)據(jù)控件

2009-07-28 09:32:41

ASP.NET自定義控

2009-08-10 14:25:33

ASP.NET服務(wù)器控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 99re视频| 爱爱综合网 | 免费看一区二区三区 | 中文字幕av中文字幕 | 欧美一级免费黄色片 | 亚洲国产精品suv | 欧美综合一区 | 四虎在线观看 | 午夜免费电影 | 玖玖玖在线观看 | 懂色中文一区二区在线播放 | 国产精品区二区三区日本 | 亚洲国产成人精品女人久久久 | 中文天堂网 | 国产999精品久久久久久 | 国产精品久久久久久一级毛片 | 精品一区国产 | 国产成人精品久久二区二区 | 久久在看| 亚洲一区二区三区在线免费 | 人人色视频| 日本三级电影免费 | 欧美精品在线播放 | 国产精品美女久久久av超清 | 精品久久国产 | 久久久久国产精品一区二区 | 欧美日韩精品一区二区三区视频 | 日本中出视频 | 精品少妇一区二区三区在线播放 | 亚洲天堂av一区 | 国产精品久久a | 无码一区二区三区视频 | 国产精品不卡一区二区三区 | 综合网伊人 | 久久精品99| 久久伊 | 免费看爱爱视频 | 性色的免费视频 | 黄色日本片| 成人在线免费视频 | 一级毛片免费 |