1、在上一次的筆記中提到了自定義控制項的方法,這種方法是自定義的windows窗體控制項庫,最後在/bin檔案下生成的是.dll格式檔案,將其拖到要使用專案的【工具箱】裡就可以直接使用了。
2、本次將記錄另一種自定義控制項的方法,是在自己寫好**後,編譯整個專案,可以直接在工具欄中看到它,沒有dll檔案,不需要自己新增到工具箱。
從使用上來看,第一種是專門寫給別人用的又不想給別人看**,則在建立專案時直接選擇建立使用者自定義控制項。第二種則直接在專案裡建立乙個元件,方便維護**。參考部落格
第一步:新建窗體應用程式
第二步:在解決方案資源管理器,右鍵新增->使用者控制項
在資源管理器中就新增了控制項了,如下面紅框所示:
設計頁面是這樣的,然後就可以寫自己的控制項**了:
如果需要新增類則可以同上面,新增->新建項->類
例子的整體結構是這樣子的,其中控制項**在usercontrol1中寫,mycomman和drawcomman是控制項需要用到的兩個類,form1中是寫窗體**的:
第三步:寫好控制項**後,執行,則可以看到【工具箱】部分出現自定義元件,這時候就可以拖動到窗體使用了
在自定義控制項的時候,遇到一些問題,這裡也記錄一下(本次自定義控制項的功能是畫出座標格,然後在form程式中給隨機數,通過定時器來實時畫折線圖):
1、寫好**,工具箱找中也成功新增後,拖動控制項到視窗,控制項什麼也不顯示,執行也是空白:
解決:問題出在自定義控制項的初始化(在usercontrol1.designer.cs中),如下面所示,注釋的是原來錯誤的,和正確的對比,少了sizechanged和paint,所以在執行時,控制項並沒有畫座標格。
private
void
initializecomponent()
更改後,從工具箱中拖動出來的控制項可以正常顯示:
2、例子還要實現實時畫圖的功能,但是執行後發現沒有任何變化,因此思考是定時器的問題
解決:在form1.designer.cs中,定時器初始化有問題,剛開始不能正常工作是因為少了tick。
// timer1
// this
.timer1.enabled =
true
;this
.timer1.interval =
1000
;this
.timer1.tick +
=new
system.eventhandler
(this
.timer1_tick)
;//要加上這句
C 自定義使用者控制項
上篇 控制項製作 本例是製作乙個簡單的自定義控制項,然後用乙個簡單的測試程式,對於初學者來說,本例子比較簡單,只能起到拋石引玉的效果。我也是在學習當中,今後會將自己所學的逐步寫出來和大家交流共享。第一步 新建乙個控制項庫專案 mycontrol 第二步 從工具箱裡面拖動1個picturebox 1個...
C 自定義使用者控制項
本例是製作乙個簡單的自定義控制項,然後用乙個簡單的測試程式,對於初學者來說,本例子比較簡單,只能起到拋石引玉的效果。我也是在學習當中,今後會將自己所學的逐步寫出來和大家交流共享。第一步 新建乙個控制項庫專案 mycontrol 第二步 從工具箱裡面拖動1個picturebox 1個button 6個...
C 自定義使用者控制項
下面就是建立過程 1 新建乙個windows窗體控制項庫 mycontrol 2 雙擊usercontrol1.cs,從工具箱裡拖出需要的控制項到使用者介面裡 3 然後右鍵檢視 就可以編寫自定義控制項的 了。4 儲存好,退出。新建乙個windows窗體應用程式。5 在使用者介面裡的工具箱中選擇乙個控...