Github 地址:https://github.com/iccb1013/Sheng.Winform.Controls
本控件庫中的代碼大約寫於10年前(2007年左右),難免有不成熟與欠考慮之處,還請包涵。
SailingEase WinForm Framework WinForm開發框架開發手冊:http://docs.shengxunwei.com/Home/Browser/sewinformfw/
升訊威 .Net WinForm 控件庫提供了超過15種 Winform 控件,你可以直接使用本控件庫,更可以通過本控件庫學到 Winform 控件開發的方法和理念。
你可以學習到:
> 如何基於 Control 類重頭開始實現一個具備復雜功能的 Winform 控件;
> GDI+ 繪圖接口的使用方法,以及如果與用戶的行為進行交互;
> 不同設計模式在 Winform 控件開發中的應用;
對於設計模式,很多人的觀念是它是用來解決大型解決方案中的問題的,但是我們在這里可以看到,設計模式不僅僅用於分解大型工程,小到一個 Winform 控件的開發,都需要具備良好的模式去幫助你分解問題,解決問題。
例如說原型模式,我雖然能夠對這種模式娓娓道來,但是一直想不出它的應用場景到底是什么,直到我發現微軟在實現 DataGridView 時,應用了原型模式解決了若干問題,才豁然開朗。
而其它諸如工廠模式,創建者模式,命令模式等,在復雜 Winform 控件的開發中,都有非常契合的應用場景。
舉例來說,我們實現一個縮略圖瀏覽器控件,會將控件的 邏輯行為、布局管理、繪圖、主題外觀 拆分成幾大塊進行實現:
如何在控件創建,呈現的過程中,統一協調各個模塊的工作?你可以在本控件庫的源代碼中找到答案。
源代碼中包括了詳細的注釋,相信對你閱讀使用源代碼會有一定的幫助:
注意:本控件庫個別位置少量使用了第三方開源代碼,具體可見代碼中的注釋。
DEMO程序畫面:
起啟頁控件:
此啟始頁控件,是由 WebBrowser 定制的,允許你實現一個類似 VisualStudio 一樣的啟始頁。
也可以使用此控件,實現 Html 頁面與客戶端混合的應用程序。
此頁面中的數據可以由 C# 程序輸出,此頁面中的 JavaScript 函數可以由 C# 調用,反之亦然,頁面中的 JavaScript 代碼可以調用 C# 代碼中的函數。
ShengDataGridView
ShengDataGridView 重繪了整個 DataGridView 的外觀。包括 Checkbox 列和 Image 列,使其更加美觀。
ShengDataGridView 的繪圖邏輯實現在渲染器 ShengDataGridViewRender 中,你可以修改或重新實現新的渲染器以定制控件的外觀。
也可以直接借助 ShengDataGridViewRendererTheme 在既有外觀的基礎上定制主題配色等。
ShengListView
ShengListView 是完全重頭實現的一個 ListView 控件,而非原生 ListView 的繼承和擴展。
將布局相關的邏輯,獨立實現為不同的 Layout,ShengListViewLayoutManager 作為基類,提供了布局所需的基本功能。
將繪圖相關的邏輯,獨立實現為不同的 Render,ShengListViewRenderer 作為基類,提供了繪圖所需的基本功能。
而繪圖時所需要用的配色方案,在 ShengListViewTheme 中定義,你可以定制不同的主題。
ShengComboSelector
ShengComboSelector 是一個下拉選擇框控件,這是一個重頭實現的控件,並非基原生下拉框控件的繼承和擴展。
你可以修改源代碼,繪制想要的任何外觀。
在繪制過程中所需的配色方案,都已獨立定義,你也可以直接修改配色方案來定制外觀。
一般情況下,推薦使用 ShengComboSelector2,因為 ShengComboSelector2 是直接基於 Control 實現的,具有更好的性能表現,你也可以修改 ShengComboSelector 的源代碼使其直接從 Control 實現而不是 UserControl。
ShengComboSelector2
ShengComboSelector2 是一個下拉選擇框控件,這是一個重頭實現的控件,並非基原生下拉框控件的繼承和擴展。
你可以修改源代碼,繪制想要的任何外觀。
ShengComboSelector2 比 ShengComboSelector 具有更好的性能,因為它是基於 Control 實現的,而 ShengComboSelector 是基於 UserControl 實現的。
在繪制過程中所需的配色方案,定義在 ShengComboSelectorTheme 中,你可以直接修改配色方案來或定制自己的主題配色方案。
ShengAdressBar
ShengAdressBar 是一個模仿 Windows 資源管理器地址欄的控件。
除了默認實現的 ShengFileSystemNode ,用來提供和資源管理器地址欄一樣的功能之外,你也可以繼承 IShengAddressNode 接口,實現自己的基於任何數據的路徑選擇器。並不局限於磁盤路徑的選擇。
ShengImageListView
ShengImageListView 是一個圖像瀏覽器控件。
ShengImageListView 具有非常良好的實現結構,獨立實現了布局管理器,渲染器,和配色方案。
ShengImageListViewRenderer,ShengImageListViewStandardRenderer:渲染器基類和默認實現的渲染器。
ShengImageListViewLayoutManager 默認實現的布局管理器。
ShengImageListViewTheme 主題功能,提供渲染器所需使用的配色方案。
你可以通過修改或實現新的布局管理器,渲染器,實現更加復雜的功能,甚至是完全不同用處的控件,例如:一個售票系統的選座控件。
ShengTreeView
ShengTreeView 是對原生 TreeView 的擴展,使其能夠支持 支持Win7/Vista外觀 風格的外觀,以及節點的拖放操作。
ShengThumbnailImageListView
ShengThumbnailImageListView 是一個簡單的縮略圖瀏覽控件。
ShengThumbnailImageListView 是基於 ListView 實現的,並使用了獨立的后台線程加載圖片。
如果需要更高級的功能,或更加深入的定制,你可以使用 ShengImageListView
大雜燴
此外代碼中還包括一個 Winform 下的控件輸入驗證,現在回過頭去看,實現的並不好,就不作展示了。
歡迎交流探討:QQ:279060597 @南京
原文:http://sheng.city/post/github-winform-sheng-winform-controls
SailingEase WinForm Framework WinForm開發框架開發手冊:http://docs.shengxunwei.com/Home/Browser/sewinformfw/