Github 地址:https://github.com/iccb1013/Sheng.Winform.Controlsgit
本控件庫中的代碼大約寫於10年前(2007年左右),不免有不成熟與欠考慮之處,還請包涵。github
SailingEase WinForm Framework WinForm開發框架開發手冊:http://docs.shengxunwei.com/Home/Browser/sewinformfw/設計模式
升訊威 .Net WinForm 控件庫提供了超過15種 Winform 控件,你能夠直接使用本控件庫,更能夠經過本控件庫學到 Winform 控件開發的方法和理念。瀏覽器
你能夠學習到:框架
> 如何基於 Control 類重頭開始實現一個具有複雜功能的 Winform 控件;函數
> GDI+ 繪圖接口的使用方法,以及若是與用戶的行爲進行交互;佈局
> 不一樣設計模式在 Winform 控件開發中的應用;post
對於設計模式,不少人的觀念是它是用來解決大型解決方案中的問題的,可是咱們在這裏能夠看到,設計模式不只僅用於分解大型工程,小到一個 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/