个人开发历程知识库

关注C++/Java/C#技术, 致力于安防监控/移动应用/WEB方面开发
------------------------------------ 业精于勤,荒于嬉;行成于思,毁于随
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C# WinForm开发系列 - Open-Source Controls

Posted on 2009-06-21 19:24  peterzb  阅读(43716)  评论(19编辑  收藏  举报

    整理了一些在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用户界面。

另外,我给大家准备了一个完全的入门教程

image

4.一个XP和Vista风格的Outlook工具栏控件

[翻译]
Jan Geerinckx著Rich OutlookBar in XP and Vista style


Outlook工具栏控件


[开发环境]
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岁的那年,我见到了各种各样的软件、应用程序和游戏,而对于我来说,当时根本不可能达到或开发这样的软件。然而,从此以后,我学习了许多,如今,我已经能够很轻易地完成这样的软件。而且,如果我能够帮助谁实现绚丽的应用程序,我决定他们可以自由地使用我的代码。

背景

此前,我一直在考虑如何做一个全定制的按钮,以及改变RGB元素究竟有多么难。我决定做一个能够提供很多操作颜色的类RibbonColor。如果你运行一下demo程序,并移动Hue,SatBrightnessTrackBar,就会很快明白我上面说的。我必须承认接近70%的RibbonControl链接库已经完成。然而,当人们迫切地希望使用改善过的代码,并告诉我我没有对我的代码作很多解释的时候,我决定把自己当作哑巴。:)

 

8.C# WinForm开发系列 - Grid Controls

9.C# WinForm开发系列 - 文章索引(其它一系列控件)

10.免费用户界面控件 Krypton Toolkit 简介

Krypton
简介

Krypton 2.7.1

 Krypton 套件 包含了让开发人员轻松创建专业外观应用程序的用户界面组件。你可以使用内置的模板来完成与工业标准应用程序相同的外观,诸如 Microsoft Office 2007 。你也可以选择构建自己的定制模板来创建十分独特的用户界面。  Krypton 套件 由三个产品组成: Krypton Toolkit, Krypton RibbonKrypton 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

VC++可伸缩面板控件

 

12.一个专业的 Ribbon 控件

 

作者: Jose M. Menendez Poó
翻译: Yuxiang
 发表日期: 2008-5-8
更新日期: 2008-5-29

简介

由于在网站上缺少好的免费的 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)。

这些元素通过 RibbonTabRibbonPanel RibbonItem 类型进行表现。 RibbonItem 是一个为任何承载于 RibbonPanelRibbonDropDown 之上的项提供基本功能的抽象类。

你可以使用 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. 当鼠标停到上面时,自动显示信息
5. 很容易地使用多行提示框文本

 

14.Windows Forms .NET

15.The Code Project (推荐站点, 资源很丰富)