轉(zhuǎn)帖|其它|編輯:郝浩|2010-11-18 15:13:07.000|閱讀 678 次
概述:本文介紹如何用Visual C# .NET 2002開發(fā)簡單的C#復(fù)合控件(Composite Control),主要講解控件開發(fā)過程中的屬性(Property)和事件(Event)處理,以方便開發(fā)人員在.NET平臺下根據(jù)自己的需要開發(fā)適合的控件。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
Visual C# .NET有很多值得學(xué)習(xí)的地方,今天重點介紹創(chuàng)建控件工程、更改命名空間、控件類名稱、添加現(xiàn)有控件、公布控件屬性。
本文介紹如何用Visual C# .NET 2002開發(fā)簡單的C#復(fù)合控件(Composite Control),主要講解控件開發(fā)過程中的屬性(Property)和事件(Event)處理,以方便開發(fā)人員在.NET平臺下根據(jù)自己的需要開發(fā)適合的控件。
當(dāng)我們在.NET平臺下做Windows Forms開發(fā)時,常常需要為了某一特殊用途而把現(xiàn)有控件結(jié)合起來使用,比如結(jié)合了Label和TextBox的控件就非常容易在窗體上布局(記得 Delphi 6里就有這么個控件),而結(jié)合了特定圖案和文字的控件則非常適合顯示公司的logo。.NET平臺就為我們提供了非常棒的工具和技術(shù)來創(chuàng)建這樣的自定義控件。下面讓我們來一起創(chuàng)作一個可以自動顯示時間的控件。
值得注意的是,.NET平臺為我們提供了三種控件的開發(fā)技術(shù),分別是:繼承控件(Extended Control)、復(fù)合控件(Composite Control)和自定義控件(Custom Control)(譯名可能會有所不同,大家可以以英文為準(zhǔn))。我們現(xiàn)在關(guān)心的是第二種——C#復(fù)合控件開發(fā)技術(shù)。
1.創(chuàng)建控件工程
在Visual C# .NET中新建一個"Windows控件庫"項目,命名為"TimeLabel"
2.更改命名空間、控件類名稱
默認(rèn)的命名空間是TimeLabel(和項目名稱一樣),控件類名稱是UserControl1。請把命名空間改為與你的開發(fā)習(xí)慣一致,如我的是LeoYang.Controls.TimeLabel,當(dāng)然你也可以選擇保留默認(rèn)命名空間;最好把控件類名稱改為有意義的命名,如 TimeLabel,這樣當(dāng)該控件出現(xiàn)在工具箱上時,就會顯示為TimeLabel而不是UserControl1了。注意,一旦改動類名,則相應(yīng)的 Construction方法名稱也要相應(yīng)改掉,如:
Www.Svn8.Com
public UserControl1(){
…
}
//就要改為:
public TimeLabel(){
…
}
3.添加現(xiàn)有控件
由于我們是要在現(xiàn)有控件的基礎(chǔ)上創(chuàng)建新控件,所以就應(yīng)該先把可用的現(xiàn)有控件添加到控件設(shè)計界面上。請在"工具箱"中雙擊Label,再雙擊Timer,兩個現(xiàn)有控件依次被添加到我們的設(shè)計界面上
4.公布控件屬性
因為要把時間寫入Label的Text屬性中,所以我們需要把label1.Text屬性公開。請在TimeLabel類中加入以下代碼: 參考資料:www.svn8.com
public string LabelText
{
get
{
return label1.Text;
}
}
注意,這里我們不需要讓控件使用者改變label1.Text的值,所以LabelText是個只讀屬性。
另外,出于美觀的考慮,我們這里還要向控件使用者公開一個LabelBackColor屬性,用于獲得和設(shè)置Label的BackColor屬性。代碼如下:
public Color LabelBackColor{
get{
return label1.BackColor;
}
set{
label1.BackColor=value;
}
}
當(dāng)然,你也可以根據(jù)需要再增加一些屬性,如字體、控件大小等,讓控件使用者可以更加靈活地使用控件。
到這里,我需要向大家補充一點,C#復(fù)合控件創(chuàng)建中的很重要的一條是:任何構(gòu)成控件(Constituent Control)的屬性必須要通過加入復(fù)合控件的屬性來公開,而不要直接把構(gòu)成控件直接以public級別公開。比如說上面,我們就不應(yīng)把Label控件的訪問級別設(shè)為public來直接公開(默認(rèn)是private)。這樣作的目的是讓我們能更好地把握控件的數(shù)據(jù)安全,從而只把那些最需要的屬性公開給控件用戶。以上介紹C#復(fù)合控件開發(fā)技術(shù)。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:博客轉(zhuǎn)載