Winform自帶的控件往往不能滿足我們的需要,或者在某些方面不夠方便,可以通過自定義控件可以解決上述的問題,但自定義控件的正確的調(diào)用方法卻鮮為人知。
新建一個項目,暫且命名為UI,默認會創(chuàng)建一個名為Form1的窗體。



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



對MyControl代碼進行修改,將其背景顏色設(shè)置為藍色。

此時打開Form1窗體,會在工具箱里面找到自定義的MyControl控件,若找不到則需要生成一下項目。

將其拖至Form1窗體上,與上方設(shè)置的背景顏色完全一致。

但這并不是正確調(diào)用方法,若是經(jīng)常接觸自定義控件,當打開包含有自定義控件的窗體時,會出現(xiàn)類似于以下兩張圖的情況,出現(xiàn)這兩種情況的原因是:生成項目時,你無法確定自定義控件生成的順序先于窗體,若先生成窗體,再生成自定義控件,生成窗體時,窗體中所引用的自定義控件還未生成,因此造成錯誤。


為了確保自定義控件生成順序先于調(diào)用自定義控件的窗體,可將自定義控件與窗體分隔為兩個工程,其中自定義控件所在的工程不再是生成一個應(yīng)用程序,而是生成類庫供其它工程調(diào)用,因此需要將工程的輸出類型設(shè)置為類庫。此時Form1和PRogram都是多余的文件,可以刪除。


對UI工程進行生成,會在工程目錄下bin文件夾中生成一個dll文件,該文件是一個引用文件,當其它工程引用這個文件,就可以調(diào)用UI工程中的自定義控件。


此時可以關(guān)閉UI工程,并新建一個目標框架與UI工程一致的項目,暫且命名為Test。


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


雖然兩個工程再同一解決方案中,但二者之間沒有任何關(guān)系,若要將其關(guān)聯(lián)起來,需要在Test工程中,引用UI工程所生成的dll文件。



再對Test解決方案設(shè)置項目依賴項,設(shè)置哪個項目依賴于哪個項目才能運行;設(shè)置項目生成順序,設(shè)置項目生成的前后順序;設(shè)置啟動項目,設(shè)置哪個項目作為啟動項目。



此時打開Test工程中的Form1窗體,在工具箱中會發(fā)現(xiàn)UI工程中的MyControl控件,如果沒有則需要生成一下項目,見到下圖,意味著Winform調(diào)用自定義控件的環(huán)境已然搭配完成,此后需要自定義控件,均與UI工程中添加,Test工程中調(diào)用。

PS:建議將UI工程置于Test工程文件夾中,作為一個整體,方便搬運。
新聞熱點
疑難解答