用Visual C#開發簡單的復合控件
2006/12/6 8:34:55

      本文介紹如何用Visual C# .NET 2002開發簡單的復合控件(Composite Control),主要講解控件開發過程中的屬性(Property)和事件(Event)處理,以方便開發人員在.NET平臺下根據自己的需要開發適合的控件。
 
 


  當我們在.NET平臺下做Windows Forms開發時,常常需要為了某一特殊用途而把現有控件結合起來使用,比如結合了Label和TextBox的控件就非常容易在窗體上布局(記得Delphi 6里就有這么個控件),而結合了特定圖案和文字的控件則非常適合顯示公司的logo。.NET平臺就為我們提供了非常棒的工具和技術來創建這樣的自定義控件。下面讓我們來一起創作一個可以自動顯示時間的控件。

  值得注意的是,.NET平臺為我們提供了三種控件的開發技術,分別是:繼承控件(Extended Control)、復合控件(Composite Control)和自定義控件(Custom Control)(譯名可能會有所不同,大家可以以英文為準)。我們現在關心的是第二種——復合控件。OK,Let’s go!

  1.創建控件工程。

  在Visual C# .NET中新建一個“Windows控件庫”項目,命名為“TimeLabel”

  2.更改命名空間、控件類名稱。

  默認的命名空間是TimeLabel(和項目名稱一樣),控件類名稱是UserControl1。請把命名空間改為與你的開發習慣一致,如我的是LeoYang.Controls.TimeLabel,當然你也可以選擇保留默認命名空間;最好把控件類名稱改為有意義的命名,如TimeLabel,這樣當該控件出現在工具箱上時,就會顯示為TimeLabel而不是UserControl1了。注意,一旦改動類名,則相應的Construction方法名稱也要相應改掉,如:

    public UserControl1()
{
 …
}
  就要改為:

    public TimeLabel()
{
 …
}
  3.添加現有控件。

  由于我們是要在現有控件的基礎上創建新控件,所以就應該先把可用的現有控件添加到控件設計界面上。請在“工具箱”中雙擊Label,再雙擊Timer,兩個現有控件依次被添加到我們的設計界面上,如圖2:



  4.公布控件屬性

  因為要把時間寫入Label的Text屬性中,所以我們需要把label1.Text屬性公開。請在TimeLabel類中加入以下代碼:

    public string LabelText
{
 get
 {
  return label1.Text;
 }
}
  注意,這里我們不需要讓控件使用者改變label1.Text的值,所以LabelText是個只讀屬性。

  另外,出于美觀的考慮,我們這里還要向控件使用者公開一個LabelBackColor屬性,用于獲得和設置Label的BackColor屬性。代碼如下:

    public Color LabelBackColor
{
 get
 {
  return label1.BackColor;
 }
 set
 {
  label1.BackColor=value;
 }
}

  當然,你也可以根據需要再增加一些屬性,如字體、控件大小等,讓控件使用者可以更加靈活地使用控件。
  
  到這里,我需要向大家補充一點,復合控件創建中的很重要的一條是:任何構成控件(Constituent Control)的屬性必須要通過加入復合控件的屬性來公開,而不要直接把構成控件直接以public級別公開。比如說上面,我們就不應把Label控件的訪問級別設為public來直接公開(默認是private)。這樣作的目的是讓我們能更好地把握控件的數據安全,從而只把那些最需要的屬性公開給控件用戶。
 
5.時間顯示的處理。

  到現在,我們就可以增加代碼來讓我們的控件顯示時間了。首先請把timer1的Interval屬性設為1000,也就是1秒的時隔。然后雙擊timer1,在其Tick事件處理過程中增加以下代碼:

    label1.Text=System.DateTime.Now.ToLongTimeString();
  這樣,每隔一秒鐘,我們的Label就會重新顯示當前系統時間。最后,請雙擊TimeLabel控件上的空白處,在出現的TimeLabel_Load事件處理過程中增加

下一頁
返回列表
返回首頁 主站蜘蛛池模板: 四虎影视永久在线观看| 天天影院成人免费观看| 亚洲av永久无码嘿嘿嘿| 男人强行被开发尿孔漫画| 国产一在线观看| 免费观看无遮挡www的小视频| 在线精品国产一区二区三区| 一级午夜a毛片免费视频| 日本性视频网站| 亚欧色一区w666天堂| 欧美日韩无线码在线观看| 伊人久久大香线蕉综合电影| 精品视频一区二区观看| 国产丰满麻豆vⅰde0sex| 91手机视频在线| 国产精品9999久久久久仙踪林| 999在线视频精品免费播放观看| 小妇人电影中文在线观看| 丰满少妇AAAAAA爰片毛片| 日韩在线视频二区| 亚洲av无码专区在线观看下载 | 最近更新2019中文字幕国语4| 亚洲精品nv久久久久久久久久 | 四虎影视在线影院4hutv| 青青草97国产精品免费观看| 国产手机在线播放| a拍拍男女免费看全片| 国模杨依大胆张腿视频流露| www.色亚洲| 性做久久久久久蜜桃花| 久久中文精品无码中文字幕| 日韩一级在线观看| 乱人伦中文字幕在线不卡网站| 欧美三级中文字幕完整版| 亚洲日韩中文字幕无码一区| 波多野结衣456| 亚洲综合校园春色| 狠狠色丁香婷婷综合久久片| 免费无码又爽又刺激高潮 | 国外成人免费高清激情视频 | 欧美一区二区三区久久综|