C 自定義控制項

2022-01-19 20:38:22 字數 1240 閱讀 3270

與繪製有關的函式

paint()

onpaint()

invalidate()

前兩個函式的執行順序,如果在onpaint()中有base.onpaint(e)函式,就相當於執行外部的paint()函式。

invalidate()執行後,會通知系統要重繪控制項,但是不是立即重繪,而是執行完所有程式之後再重繪。

protected

override

void onpaint(painteventargs e)//

重寫onpaint方法

view code

乙個控制項應該什麼時候繪製主要有兩個 :

乙個是 系統來確定 這個控制項需要繪製 比如 最小化後在最大化 那麼此時 系統會發出wm_paint 訊息來告知控制項 你需要重繪了

另乙個就是 人為的呼叫this.invalidate()或者this.invalidate(rectangle)來自己觸發一次重繪 

自己開發的winform控制項通常有三種型別:復合控制項(composite controls),擴充套件控制項(extended controls),自定義控制項(custom controls)。

復合控制項:將現有的各種控制項組合起來,形成乙個新的控制項,將集中控制項的功能集中起來。

擴充套件控制項:在現有控制項的控制項的基礎上派生出乙個新的控制項,為原有控制項增加新的功能或者修改原有控制項的控能。

自定義控制項:直接從system.windows.forms.control類派生出來。control類提供控制項所需要的所有基本功能,包括鍵盤和滑鼠的事件處理。自定義控制項是最靈活最強大的方法,但是對開發者的要求也比較高,你必須為control類的onpaint事件寫**,你也可以重寫control類的wndproc方法,處理更底層的windows訊息,所以你應該了解gdi+和windows api。

本系列文章主要介紹自定義控制項的開發方法。

控制項(視覺化的)的基本特徵:

1. 視覺化。

2. 可以與使用者進行互動,比如通過鍵盤和滑鼠。

3. 暴露出一組屬性和方法供開發人員使用。

4. 暴露出一組事件供開發人員使用。

5. 控制項屬性的可持久化。

6. 可發布和可重用。

C 自定義控制項

做radiobutton button textbox的自定義控制項 先在工程分別新增3個類 然後分別在類裡面寫 diybutton.cs diytextbox.cs diyradiobutton.cs 寫好自定義控制項後就開始更改一些地方 窗體下有個窗體名.designer.cs開啟這個 檔案 更...

c 自定義控制項

第一步 新建乙個控制項庫專案 mycontrol 第二步 從工具箱裡面拖動1個picturebox 1個button 6個lable控制項到使用者介面上,布局如下 如上圖,設定picturebox的name為picbox,背景為白色,button的name為btnopen,另外靠左的三個lable的...

c 自定義控制項

vs怎麼自定義乙個控制項,這裡記錄乙個簡單的小例子。例子自定了picturebox這個控制項,將其形狀改寫成橢圓。首先講講如何自定義乙個控制項 1 建立乙個windows窗體空間庫的專案 2 專案輸出型別改為類庫,編譯生成,將生成的dll檔案複製到特定資料夾 3 在winform專案工具箱裡新增dl...