1. 程式人生 > >一種正確呼叫自定義控制元件的方法

一種正確呼叫自定義控制元件的方法

Winform自帶的控制元件往往不能滿足我們的需要,或者在某些方面不夠方便,可以通過自定義控制元件可以解決上述的問題,但自定義控制元件的正確的呼叫方法卻鮮為人知。

1、一般的呼叫方法

新建一個專案,暫且命名為UI,預設會建立一個名為Form1的窗體。


新建一個自定義控制元件,名為MyControl。




對MyControl程式碼進行修改,將其背景顏色設定為藍色。


此時開啟Form1窗體,會在工具箱裡面找到自定義的MyControl控制元件,若找不到則需要生成一下專案。


將其拖至Form1窗體上,與上方設定的背景顏色完全一致。


但這並不是正確呼叫方法,若是經常接觸自定義控制元件,當開啟包含有自定義控制元件的窗體時,會出現類似

於以下兩張圖的情況,出現這兩種情況的原因是:生成專案時,你無法確定自定義控制元件生成的順序先於窗體,若先生成窗體,再生成自定義控制元件,生成窗體時,窗體中所引用的自定義控制元件還未生成,因此造成錯誤。



2、正確的呼叫方法

為了確保自定義控制元件生成順序先於呼叫自定義控制元件的窗體,可將自定義控制元件與窗體分隔為兩個工程,其中自定義控制元件所在的工程不再是生成一個應用程式,而是生成類庫供其它工程呼叫,因此需要將工程的輸出型別設定為類庫。此時Form1和Program都是多餘的檔案,可以刪除。



對UI工程進行生成,會在工程目錄下bin資料夾中生成一個dll檔案,該檔案是一個引用檔案,當其它工程引用這個檔案,就可以呼叫UI工程中的自定義控制元件。


此時可以關閉UI工程,並新建一個目標框架與UI工程一致的專案,暫且命名為Test。


將UI工程加入Test解決方案。

  


雖然兩個工程再同一解決方案中,但二者之間沒有任何關係,若要將其關聯起來,需要在Test工程中,引用UI工程所生成的dll檔案。

 


再對Test解決方案設定專案依賴項,設定哪個專案依賴於哪個專案才能執行;設定專案生成順序,設定專案生成的前後順序;設定啟動專案,設定哪個專案作為啟動專案。



此時開啟Test工程中的Form1窗體,在工具箱中會發現UI工程中的MyControl控制元件,如果沒有則需要生成一下專案,見到下圖,意味著Winform呼叫自定義控制元件的環境已然搭配完成,此後需要自定義控制元件,均與UI工程中新增,Test工程中呼叫。


PS:建議將UI工程置於Test工程資料夾中,作為一個整體,方便搬運。