網上已經有很多關於組件和控件的文章了,我也是通過這些文章慢慢學會這些技術的。但那些文章主 要是教程式的,給的例子雖然簡單容易理解,但針對實際應用的例子比較少。這裡把我在工作和學習中做 過的組件和控件的實現方法貼出來,希望對初學者能有幫助。當然我的代碼中也會存在不少問題,有些解 決方法也並不完美,希望看到的朋友不吝賜教。
首先把我之前參考的系列文章的鏈接貼出來,裡面有比較詳細的教程,對初學者幫助較大。
.NET組件編程 http://www.cnblogs.com/mapserver/category/65343.html
WinForm控件開發 http://www.cnblogs.com/guanjinke/category/77694.html
要學會組件控件編程,首先必須了解PropertyGrid控件,以及相關的Attribute,這些在上面所給的參 考文章中已經有比較詳細的介紹。
關於控件,就不需要過多解釋,而組件則沒有控件那麼應用廣泛。最直觀的理解是控件是運行時可見 的,而組件是運行時不可見的。控件一般是用來和用戶進行交互操作的,而組件是封裝業務邏輯的。在我 編程的時候,組件通常是附加在特定的控件上,為控件提供一定的業務功能的。而我在很多時候都偏向於 使用組件,下面就分析組件相對於控件的優勢。
比如對一個控件A需要添加功能X,用控件的方法去實現就是繼承控件A,然後在新控件B中實現功能X。 如果需要對控件A添加功能Y,繼續用控件的方法的話,需要再創建一個控件C繼承控件A,然後實現功能Y 。但是如果再做完上面的工作之後,需要對控件A同時添加功能X和功能Y,或者需要對控件D添加功能X, 就必須創建更多的控件。如此下去就會造成控件數量激增,不利於管理。
如果用組件的話,情況就大不一樣了。創建組件分別封裝功能X和功能Y,需要對控件A添加功能X的話 ,把組件X拖放到窗體中,設置組件X的一個屬性指定為控件A即可。如果需要添加功能Y的話,和之前的步 驟完全一樣。如果需要對控件D添加功能,只要組件的接口支持控件D,和針對控件A的操作也完全一樣。 如此,給控件添加功能就像搭積木一樣方便。每種功能只需要有一個組件去實現,然後把需要添加對應功 能的控件與組件綁定即可。
組件的思路也符合編程中的一個基本原則:先組合後繼承。比起控件來,組件的應用顯得更靈活,所 以在很多時候我都會選擇組件。另一個原則就是一個組件只封裝一種功能,不要貪多求全把多個功能封裝 到一個組件裡,這樣會降低組件的靈活性。
本篇就到此吧,從下一篇開始,將通過實例演示如何實現組件控件編程。