c 控制項編寫 (2)重寫乙個TabControl

2022-01-31 07:32:46 字數 1375 閱讀 5169

在重寫tabcontrol的時候我們最先想到的是設定

this.drawmode = tabdrawmode.ownerdrawfixed;

然後重寫

protected

override

void ondrawitem(drawitemeventargs e)

這樣重寫後只是重寫選項卡上的區域,這個區域並不包括邊框,這樣我們所重寫的和邊框不搭調,也無法達到我們想要的功能 。

而更好的方法是重寫整個控制項

private

void setstyles()

關鍵的地方在 controlstyles.userpaint 設定為true

protected

override

void onpaint(painteventargs pe)

}

this.gettabrect函式可以獲取的標籤的位置,這個為我們重繪標籤提供了很好的幫助

private

void drawtabpage(graphics graphics, rectangle rectangle, tabpage tp)

else

我們給標籤加上了乙個滑鼠移上去顯示關閉按鈕的功能   重寫onmousemove的功能

bool closeex = false;

protected

override

void onmousemove(mouseeventargs e)

base.onmousemove(e);

}

在滑鼠移動過快的時候,會導致關閉按鈕沒有重新整理,所有我們要在滑鼠離開控制項的時候讓closeex=false並重繪製。

好到這一步我們就完成我我們的繪製工作 。我在繪製的時候使用了漸變畫刷用了5個引數來標識每個指定的顏色

private color _linecolor = color.fromargb(157, 162, 168); //邊線顏色 

private color _colordefaulta = color.fromargb(231, 231, 231);//預設標籤漸變 a

private color _colordefaultb = color.fromargb(255, 255, 255);//預設標籤漸變 b

private color _coloractivatea = color.fromargb(184, 203, 217);//點選漸變a

private color _coloractivateb = color.fromargb(255, 255, 255);//點選漸變a

golang寫的乙個分頁控制項。

直接放 吧,基本不用改,直接用了。package components import math date 2019 04 01 description 分頁控制項 pages 分頁控制項 type pages struct startrecord 設定分頁查詢時起始位置 func p pages s...

編寫乙個c 工程

c 接觸的很少,之前也只是會編寫乙個簡單的cpp檔案,但乙個工程的實現,往往不僅包括原始檔 cpp字尾檔案 一般還有標頭檔案 h字尾檔案 等。乙個c 工程中只能有乙個main函式,這個函式所在的檔案類似於前端中的入口檔案,即從main函式開始執行整個工程。即有多個cpp檔案,這些檔案中也只有乙個入口...

c 控制項編寫 (1)自定義乙個Label

如果需要建立乙個控制項,要從usercontrol control或者是window窗體提供的其他類繼承。usercontrol適合用來做組合控制項。control需要自己實現控制項的外觀等等,但靈活性高。windwos控制項當然就是能夠對現有的控制項進行適當的擴充套件。首先從control繼承乙個...