制作VS風格的Toolbox控件
在前些日子里,我寫了有十篇關于WinForm 控件的制作教程,在這些教程里使用的例子都十分的簡單,并且示例的控件基本沒有什么用,是該寫一個簡單實用的控件的時候了。今天我就來制作一個VS風格的ToolBox工具箱。VS風格的ToolBox和QQ的界面很相似,都是有多個欄目,并且這些欄目可以展開和折疊,當鼠標在某個子欄目上時,可以高亮顯示,另外在VS風格的ToolBox中,點擊選中項目的時候,要用特殊的顏色標識出來。如下圖所示:
![]()
其實,控件的制作并不神秘,我們只需要把掌握的知識組合起來即可。現在我們動手來做這個控件,首先看看我們要處理哪些要點:
其實,控件的制作并不神秘,我們只需要把掌握的知識組合起來即可。現在我們動手來做這個控件,首先看看我們要處理哪些要點:
1. 創建控件的邊框,我在前邊的文章也講過(),直接將代碼復制過來,稍做修改即可。
2. 添加滾動條,因為我們的控件只需要垂直的滾動,所以我只只加入一個垂直的滾動條。
3. ToolBox包含多個Category,我們不但要創建Category類,還要創建這個類的集合。
4. 每一個Category包含多個Item,我們不但要創建ToolBoxItem類,還要創建這個類的集合。
5. 重載OnPaint方法,繪制控件的內容,在繪制的時候要注意滾動條的當前值,由于采用了雙緩沖機制,所以每次總是將所有的內容重繪一次,不考慮ClipRect。
6. 寫一個方法,根據鼠標的坐標計算出鼠標指向的Item或者Category,這個方法是這個控件的核心。
7. 重載OnMouseMove方法,當鼠標指向某個Item的時候,高亮顯示出來。
8. 重載 OnMouseDown方法,當鼠標在某個Item上按下的時候,用指定的顏色標識出來,如果鼠標按下的地方是一個Category,根據當前的情況展開或者時折疊這個category。
9. 計算控件當前狀態的內容的總的高度,用于設置滾動條的可見與不可見。
10. 暴露一個屬性,用于為用戶提供當前選中的Item。
11. 聲明一個ItemChanged事件,便于用戶在選擇另一個Item時添加處理的代碼。
實現了上述的內容,這個控件也就基本完成了。由于代碼并不復雜,我就不將代碼列出來講解了,我將提供代碼的下載,大家在看代碼的時候,如有不明白的地方,可以參考我前面的控件教程。因為只花了幾個小時寫的這個控件,難免還有一些問題,請大家指出。
源代碼下載

浙公網安備 33010602011771號