类似 Visual Studio 2005 的界面






4.89/5 (160投票s)
使用 Extender 类,为 DockPanel Suite 应用一个类似 Visual Studio 2005 的主题。

概述
自 Opera、Firefox 等软件引入 MDI 标签页界面以来已经过去一段时间了。不幸的是,很少有免费组件能让 .NET 开发者创建这样的界面。我在网上搜索了很长时间,才发现了 DockPanel Suite,这是 Weifen Luo 开发的一个出色且完全可定制的组件。该组件可在 Sourceforge 上找到,在此处。
引言
本文展示了如何通过实现一个 Extender
类来定制 DockPanel
组件。附带的示例为 DockPanel
的 1.0 版本创建了一个类似 Visual Studio 2005 的界面。
Copyright
Weifen Luo 拥有 DockPanel Suite(包括本文所述的 Extender 类)的版权。
背景
本文基于 DockPanel Suite 库,需要至少对其有基本了解。请参阅“参考文献”部分以获取更多信息。此外,还需要对 System.Drawing
类和函数有良好掌握。
Extender 类
DockPanel
通过五个类接受定制
AutoHideTab
表示内容处于自动隐藏状态时使用的单个标签。AutoHideStrip
在内容处于自动隐藏状态时绘制标签条和标签。DockPaneCaption
在内容为工具窗口时绘制标题窗格。DockPaneTab
表示内容为文档窗口或工具窗口时使用的单个标签。DockPaneStrip
在内容为文档窗口或工具窗口时绘制标签条和标签。
为方便起见,这些类包含在一个 Extender
类中。以下各节将描述组件部分以及您可以定制的相对模块。
AutoHideStrip 和 AutoHideTab
自动隐藏标签条可以出现在主窗体的四个边缘,并通过 MouseOver
事件激活。只有当至少有一个内容处于自动隐藏状态时,标签条才会显示。当标签停靠在左侧或右侧时,产生的标签会旋转 90 度。
以下是停靠在顶部的窗体的屏幕截图

这是另一个停靠在底部的窗体的示例

标签条和标签的绘制由 AutoHideStripFromBase
类完成。主要的绘制方法如下:
OnPaint
处理控件的OnPaint
事件。DrawTabStrip
绘制具有右侧方向的标签条以及所有包含的标签。DrawTab
绘制单个标签。
DockPaneCaption
DockPaneCaption
表示窗体停靠时的边框,通常包含标题、关闭按钮和设置为自动隐藏状态的按钮。类似 Visual Studio 2005 的界面还包含一个通过上下文菜单操作窗体状态的按钮。
以下是 DockPaneCaption
的屏幕截图

标题的绘制由 DockPaneCaptionFromBase
类完成。主要的绘制方法如下:
OnPaint
处理控件的OnPaint
事件。DrawCaption
绘制背景和标题文本。
DockPaneStrip 和 DockPaneTab
DockPaneStrip
表示内容为工具窗口或文档时显示的标签区域。两者在标签形状和其他行为方面有许多不同之处。一个例子是在只有一个内容时隐藏标签条。标签条和标签的绘制由 DockPaneStripFromBase
类完成。以下示例将阐明这些差异。
显示文档标签的标签条示例

显示带有图标和溢出符号的文档标签的标签条示例

显示工具窗口标签的标签条示例

文档标签条的绘制方法如下:
OnPaint
处理控件的OnPaint
事件。DrawTabStrip_Document
绘制背景。DrawTab_Document
绘制形状、图标和文本。
工具窗口标签条的绘制方法如下:
OnPaint
处理控件的OnPaint
事件。DrawTabStrip_ToolWindow
绘制背景。DrawTab_ToolWindow
绘制形状、图标和文本。
Using the Code
要将 Extender
应用于 DockPanel
的实例,请在窗体的 Form_Load
事件中插入以下代码,并将控件名称替换为您自己的名称。
Extender.SetSchema(DockPanel1, Extender.Schema.FromBase)
最终注释
希望您觉得本文有用。如果您觉得本文愚蠢、令人讨厌或不准确,请根据您的判断对文章进行评分。最后,随时欢迎您通过提出改进建议或提交代码或其他材料来自由地为本项目做出贡献。
致谢
感谢 Weifen Luo 为社区提供 DockPanel
组件。如果您喜欢此组件,可以 在此处向 Weifen Luo 捐款。
参考文献
- DockManager 控件:Weifen Luo 在 The Code Project 上的原始文章
- Sourceforge 上的 DockPanel Suite:下载最新版本
- Sourceforge 上的 DockPanel Suite 论坛:人们在此处发布关于 DockPanel Suite 的问题。
- 绘制您自己的标签:一篇关于如何绘制标签的文章
- 标签页文档界面 来自维基百科,自由的百科全书
- 为 PropertyGrid 添加自定义属性:我关于此项目中使用的
PropertyGrid
扩展版本的文章 - Netron 项目:一个免费的图形库,包含
DockPanel
的修改版本
历史
- 2006 年 6 月 3 日:首次提交
- 2006 年 7 月 20 日:bug 修复(无需设置
MdiParent
属性) - 2007 年 1 月 22 日:更新了下载内容