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



新建一個(gè)自定義控件,名為MyControl。



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

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

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

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


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


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


此時(shí)可以關(guān)閉UI工程,并新建一個(gè)目標(biāo)框架與UI工程一致的項(xiàng)目,暫且命名為Test。


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


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



再對(duì)Test解決方案設(shè)置項(xiàng)目依賴項(xiàng),設(shè)置哪個(gè)項(xiàng)目依賴于哪個(gè)項(xiàng)目才能運(yùn)行;設(shè)置項(xiàng)目生成順序,設(shè)置項(xiàng)目生成的前后順序;設(shè)置啟動(dòng)項(xiàng)目,設(shè)置哪個(gè)項(xiàng)目作為啟動(dòng)項(xiàng)目。



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

PS:建議將UI工程置于Test工程文件夾中,作為一個(gè)整體,方便搬運(yùn)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注