C# WinForm開發系列 - Open-Source Controls
整理了一些在WinForm開發中可以使用的開源組件.(文章及相關代碼搜集自網路,僅供學習參考,著作權屬於原作者! ).
1. 仿office 2007的Ribbon風格面板(該控制項模仿office 2007的Ribbon風格,顯示操作面板。)
2. .NET中最全功能的表格控制項
[翻譯]
Mathew Hall.著XPTable - .NET ListView meets Java's JTable
[簡介]
由於項目需要,我需要定製一個ListView,它必須能夠在列中插入映像、下拉框、可上下調整的數字、進度條等等。由於已經有了一個Java下的背景,我將簡單地基於那個JTable封裝。
[功能]
全定製可視化介面
支援XP風格
輕易添加再定製的控制項
可隱藏列
行、列、單元可以被Disable
每個單元、列可以有Tooltip
等等……
[XPTable]
XPTable包含下面的組件:
1. Table,
2. ColumnModel 和它的 Columns,
3. TableModel 和它的 Row 和 Cell,
4. Renderer
5. Editor
3.OpenTheme一個開源的使用者圖形介面(GUI)工具包
[翻譯]
weiqj.著OpenTheme : An open source graphic user interface (GUI) toolkit
[簡介]
OpenTheme是一個基於XML的GUI工具包,它包括一系列基礎類和WYSIWYG 編輯器。儘管,它最初的設計是用於全屏GUI的,不過完全適用Windows使用者介面。
另外,我給大家準備了一個完全的入門教程。
4.一個XP和Vista風格的Outlook工具列控制項
[翻譯]
Jan Geerinckx著Rich OutlookBar in XP and Vista style
[開發環境]
VB
.NET
[簡介]
本文中的控制項將實現一個XP和Vista風格的Outlook工具列控制項。
[基本結構]
控制項中有三個類:
OutlookBarButton類
該類實現了單個的Button執行個體,其中繪圖不包括在這裡。
基本成員如下:
Text:如果按鈕作為大的按鈕顯示的時候,文字會顯示在上面。如果,按鈕顯示在最下方,作為小的按鈕顯示,這些文字會作為Tooltip顯示。
Visible:指示按鈕是否可見,可以在運行過程中,動態地設定。
Allowed:當設定為False時,這個按鈕不可見。在啟動並執行時候,你不可以訪問它,可以阻止特定的使用者只允許訪問特定按鈕。
Image:顯示在按鈕上的圖片。最好是24x24或更大的表徵圖。
Rectangle:只在assembly可設。
OutlookBarButtonCollection類:
它繼承於CollectionBase,是上述Button的集合。
5.使用Vista風格的控制項.NET 2.0
翻譯
Pedro M. C. Cardoso著Vista Controls
簡介
Vista控制項集(Vista Controls)是一個於微軟Windows Vista作業系統下提供新樣式控制項的一個庫。
如果你在.NET 2.0的應用程式中使用了 System.Windows.Forms程式集中的樹狀圖Treeview,列表視圖Listview, 開啟檔案對話方塊OpenFileDialog, 儲存檔案對話方塊SaveFileDialog 和瀏覽目錄對話方塊FolderBrowserDialog,當你的程式運行於Vista下面的時候,你會發現你的程式風格並沒有任何變化,並沒有自動調用新的Vista介面風格,還是以前的Windows XP的風格。
在Vista Controls中,你將發現有五個代替的類,它們將使得運行在Vista下面的程式看上去是Vista的樣子,而如果你在早期的Windows系統中使用這些程式時,還是以前的風格。這就給你減輕了很大的工作量,很容易你的程式就可以同時適應Vista和以前版本Windows了。
另外,Vista控制項集包括了一個新加入Vista的控制項:Command Link。因為這個控制項在早期的Windows中並不存在,所以當程式運行在這些Windows系統中時,它會模仿Vista風格。
控制項
常規對話方塊
開啟檔案,儲存檔案和開啟目錄對話方塊
6.面板控制項陳列庫 XPanderControls
面板控制項陳列庫 XPanderControls
作者: Uwe Eichkorn.
翻譯: [yn]Yuxiang
本文介紹一個可對子控制項分組的可擴充面板控制項陳列庫的使用。
C# (C# 2.0)
Windows (Win2K, WinXP, Vista), .NET (.NET 2.0)
Win32, VS (VS2005)
Dev
發表日期: 2007-4-13
更新日期: 2007-9-29
下載原始碼和示範檔案(http://www.codeproject.com/useritems/XPanderControls/xpandercontrols.zip) - 177.8 KB
原文:XPanderControls
譯者注:(另外,限於篇幅,譯文的大部分插圖沒有貼上來,請下載譯文查看)
(1)在解壓縮原始碼後,建議把源碼檔案的唯讀屬性取消,避免在儲存時出現警告對話方塊
(2)在第一次開啟解決方案後,需要先產生控制項陳列庫 BSE.Windows.Forms.dll,否則示範表單 Form1.cs 不能被開啟
(3)在啟動調試前,請把 BSE.Windows.Test 項目設定為啟動項目
(4)請注意:在使用 RightToLeft 功能時,在運行時刻,會產生錯誤(imageList2 控制項初始,請參閱下面的相關說明),請關注作者的更新
簡介
XPander 控制項陳列庫提供了把多個使用者控制項放置在單個容器中的機制。可以隨意地顯示或隱藏它。 Xpander 控制項追隨 MS Outlook 的視覺風格。所有控制項都支援視覺化設計工具、智能標記和 RightToLeft 功能。面板的使用與 toolstripenders 相關聯,可形成有趣的視覺效果。
面板風格(Panel styles)
在示範項目中,面板的風格可以通過在 tooltrip 中的組合框變更。
水溶效果(Aqua effects)Office2007 效果(Office2007 effects)
在視覺化設計工具中,面板顏色和屬性都是可以定製和改變的。
當 RightToLeft 屬性值被設定為 RightToLeft.Yes 時,控制項元素的水平對齊就改變為從右向左。
7.Office 2007 Ribbon 風格的按鈕和菜單[轉載]
翻譯
Juan Pablo G.C.著Improved and Recoded RibbonMenuButton
簡介
首先,感謝大家。我非常感謝大家對本文的努力給與了高度的評價。我記得當我16歲的那年,我見到了各種各樣的軟體、應用程式和遊戲,而對於我來說,當時根本不可能達到或開發這樣的軟體。然而,從此以後,我學習了許多,如今,我已經能夠很輕易地完成這樣的軟體。而且,如果我能夠協助誰實現絢麗的應用程式,我決定他們可以自由地使用My Code。
背景
此前,我一直在考慮如何做一個全定製的按鈕,以及改變RGB元素究竟有多麼難。我決定做一個能夠提供很多操作顏色的類RibbonColor。如果你運行一下demo程式,並移動Hue,Sat或Brightness的TrackBar,就會很快明白我上面說的。我必須承認接近70%的RibbonControl連結庫已經完成。然而,當人們迫切地希望使用改善過的代碼,並告訴我我沒有對My Code作很多解釋的時候,我決定把自己當作啞巴。:)
8.C# WinForm開發系列 - Grid Controls
9.C# WinForm開發系列 - 文章索引(其它一系列控制項)
10.免費使用者介面控制項 Krypton Toolkit 簡介
Krypton
簡介
Krypton 2.7.1
Krypton 套件 包含了讓開發人員輕鬆建立專業型式應用程式的使用者介面組件。你可以使用內建的模板來完成與工業標準應用程式相同的外觀,諸如 Microsoft Office 2007 。你也可以選擇構建自己的定製模板來建立十分獨特的使用者介面。 Krypton 套件 由三個產品組成: Krypton Toolkit, Krypton Ribbon 和 Krypton Navigator。(譯者註:在安裝 Krypton 套件 後,包含了程式集、協助文檔、模板、樣本及其原始碼,並把程式集中的組件添加到 Visual Studio 2005(或2008)開發環境的工具箱中,同時添加 Krypton Form Project、Krypton ToolStrip Form Project 和 Krypton Ribbon Form Project 項目模板。 Krypton 套件 提供了 Office 2007 藍色、Office 2007 銀色、Office 2007 黑色、Office 2003 、System 等配色模板,易於與 .NET 的工具列、功能表列、狀態列等控制群組合使用)
(下載解壓縮後只需要安裝 KryptonToolkit271.msi): windowsclient.net 上的下載
或者: http://www.componentfactory.com/downloads/KryptonToolkit271.zip
Krypton Toolkit
Krypton Toolkit 提供了一組免費的基礎使用者介面組件。你可以在自己的產品中分發已簽名的 Krypton Toolkit 程式集 ,無需付費或經過許可。如果你想查看或修改原始碼,你可以在 Component Factory 網站上購買,請查看頁末的連結。
11.仿XP資源管理員中的可伸縮面板控制項
[翻譯]
Collapsible Panel control
該控制項擁有類似Windows XP 的資源總管中左邊的可伸縮面板的功能。
[簡介]
該控制項可以包括多個視圖,當你點擊面板的標題列時,它可以自動調整下面的面板。你可以自己設定它的標題列表徵圖、定製伸展/收縮按鈕。另外,有幾種不同的類型標誌,用於定製面板的介面和行為。
當你點擊一個面板的時候,你將在主視窗收到WM_COMMAND訊息的通知,它會告訴你面板真被伸展還是收縮。當然,你也可以設定不讓它自動縮放。
控制項還允許自繪映像(ownerdrawn),你可以捕獲WM_DRAWITEM訊息,然後繪製自己的按鈕映像。
由於效能的考慮,控制項內部把按鈕映像繪製在一個位元影像中,這樣就可以保證迅速地把它顯示到介面上。為了防止閃爍,在繪製過程中使用了memory DC。
12.一個專業的 Ribbon 控制項
作者: Jose M. Menendez Poó
翻譯: Yuxiang
發表日期: 2008-5-8
更新日期: 2008-5-29
- 下載示範程式
- 下載原始碼(http://www.codeproject.com/KB/toolbars/WinFormsRibbon.aspx)
簡介
由於在網站上缺少好的免費的 Ribbon 控制項,我決定自己編寫一個。我分析了以前(包括那些在 CodeProject 上)的 ribbon 控制項的工作機制。很不幸,大多數已有的控制項只是差勁的嘗試。為什麼這樣說?因為它們有些缺少好的繪製,有些缺少改變大小的功能,有些幾乎是什麼都缺。當然,已開發的好的 Ribbon 控制項需要付費。這個 ribbon 是免費的。
為什麼不使用 WPF?主要的原因是我需要把 Ribbon 添加到已有的 WinForms 應用程式中。依我看來,這不是“不”使用WPF,而是“還沒有”使用。無論如何,你可以在WPF 中承載(host) 一個 WinForms 控制項(參閱 http://msdn.microsoft.com/en-us/library/ms750944.aspx)。
一些設計目標
實現 — 此 ribbon 包含在一個 Control 視窗中,它內部的每個元素作為控制項內部的一系列 bounds 管理,就像 ToolStrip 控制項那樣。 儘管從 ribboon 的內部代碼來管理是困難的,但是這是讓它保持最佳實現 ribbon 的一種方式。 相信我,下載示範程式,運行它並改變表單的大小。它完成得很漂亮。
與 Office ribbon 的一致性 — 我曾經讀過有關 Jakob Nielsen 講述的大多數使用者更喜歡所使用的程式看起來像 Word, Excel 或 Powerpoint。這相關明顯,因為人們每天都使用這些軟體。視覺效果與 office 的 ribbon 一致是非常重要的,因為人們已經知道期待什麼,並且那是有益的用法。 我嘗試讓每個 Ribbon 中的元素的外觀及行為嚴格地與 Office 的 ribbon 一致。
易於為程式員使用 — 組件命名與大多數 WinForms 命名系統一致, 更多的使用 ToolStrip 元素。為類似的元素的屬性,事件和方法命名就像在 ToolStrip 的工藝項那樣。
設計時刻支援 — 我將會添加越來越多的設計時刻支援,因此你可以在設計器中 100% 地管理這個 ribbon。
當我發現 bugs 或者你樂於讓我知道它們,我將會提供 更新 和 修正 。
使用 Ribbon
此 ribbon 位於 System.Windows.Forms
命名空間,就像其它控制項,我想使用諸如 MyCoolFirm.MyCoolNameSpace.MyCoolSubNameSpace
等的控制項命名方式是讓人不爽的(請僅為商業對象進行這樣的命名)。
你可以添加對已經編譯的 dll (System.Windows.Forms.Ribbon.dll )的引用,或者你可以直接複製源碼檔案到你的專案檔夾中。現在代碼已設計好,你可以只複製源碼檔案,不需要任何額外的資源。
快速指南
此 ribbon 主要由三種元素組成:標籤(tabs),標籤上的面板(panels on the tabs,其他開發人員稱它們為組),以及在面板內部的項目(items inside the panels)。
這些元素通過 RibbonTab
, RibbonPanel
和 RibbonItem
類型進行表現。 RibbonItem
是一個為任何承載於 RibbonPanel
或 RibbonDropDown
之上的項提供準系統的抽象類別。
你可以使用 Ribbon 的智能標記來添加標籤,可以通過選定標籤並調用在屬性工作表底部的“Add Panel(添加面板)”動作來添加標籤的面板。
Ribbon 上的元素依據可用的 ribbon 空間來調整大小。這是 ribbon 的關鍵特徵。通過調整大小,它試圖把所有可用的命令都顯示在螢幕上,而不是在溢出的按鈕上隱藏它們(就像舊式的 ToolStrip 那樣)。
我使用三種尺寸來處理:Large(大), Medium(中等) 和 Compact(緊湊)。一個附加的尺寸用於面板,因為面板可以被摺疊,然後它們採用 Overflow 大小模式。
13.甘特圖繪製組件
翻譯
Adagio.81. 著Gantt Chart
簡介
該組件可以使你簡單地把甘特圖加入你的應用程式。你只需要3行代碼就可以做到了。
這個甘特圖(Gantt Chart)包括下面的特徵:
1. 列的寬度自動根據組件的寬度和起始結束時間調整,如果日期之間多於2天,控制項只會顯示日期,否則還會顯示時間。
2. 你可以給每個bar設定顏色
3. 自動顯示捲軸
4. 當滑鼠停到上面時,自動顯示資訊