DockPanel Suit - 1

转载 2012年03月26日 09:22:16
DockPanel Suit - 1 

http://www.cnblogs.com/LeoWong/archive/2009/07/04/1516921.html

大家一定对Visual Studio系列的Docking印象深刻, 如果你也用过SharpDevelop, 肯定也会对里面的Docking感兴趣, 更让人激动的是, 这个DockPanelSuit居然是国内高手的作品.

是的, 他叫WeifenLuo, 今天这里要介绍的就是他的大作WinFormsUI.Docking, DockPanel Suit For .NET2.0, 目前Version是2.3.1.0, 可以从这里得到最新版本的源代码

 

先来说说大概的架构.

这个DockPanel Suit主要有五大元素:

  1. DockPanel
  2. DockWindow
  3. DockPane
  4. DockContent
  5. FloatWindow
  • DockPanel

这个可以说是Docking的源头, 继承自System.Windows.Forms.Panel, 其他的所有控件都由它来管理, 无论是显示, 隐藏还是DragDrop. 由它自带的DockSample可以看出, 实现的时候, 只需把该DockPanel填充整个MainForm就行, 其他所有继承自DockContent的Form只要调用Show(DockPanel)这个函数, DockPanel会自动管理这个附加到上面的窗体

  • DockWindow

事实上, 对于DockPanelSuit来说, DockPanel并不是唯一的一个附加到MainForm上的Panel, DockWindow也是. DockWindow是相对于DockPanel来说较小的一个单元, 为什么在用了DockPanel之后还需要额外增加DockWindow呢? 原因很简单, DockWindow是用来划分DockPanel用的! 所以, 到目前为止, 你的MainForm上的架构应该是这样, 在一个DockPanel上面还有几个DockWindow把DockPanel分成了几块. 默认DockPanel用DockWindow创建了五个区域, 分别是DockTop, DockBottom, DockLeft, DockRight和Document, 任何一个DockPane(下面会提到)都棣属于这五个区域中的某一个. DockPanel就是通过DockWindow来管理DockPane的所在位置的. DockWindow也是继承自System.Windows.Forms.Panel

  • DockPane

DockPane又是一个相对于DockWindow来势较小的一个单元, 它是DockPanelSuit的一个基本显示单元, 最终用户看到的UI都是由DockPane组合而来的. 一个DockPane基本包括一个CaptionPane, 一个DockPaneStrip, 一个Splitter以及相应的DockContents. DockPane也可以嵌套自己, 但最多只能嵌套一个, 所以, DockPane也只有一个Splitter用来自由拖动变换DockPanes的大小. CaptionPane以及DockPaneStrip都是自定义的控件, 都继承自System.Windows.Forms.Control. CaptionPane是DockPane的标题栏, 而DockPaneStrip则是DockPane的标签栏. DockContent是每个DockPane的主要显示内容. DockPane自己维护所有的CaptionPane, DockPaneStrip, Splitter和DockContents, 并指定各自的Bounds来组合一个完整的UI

  • DockContent

DockContent是DockPanelSuit的基本内容单元, 而事实上, 它是一个Form. 对于所有需要Docking的窗体来说, 都要继承这个DockContent. 刚开始, DockContent并没有附加到相应的DockPane上面, 而是通过指定DockContent的Parent为相应的DockPane时才添加上去的, 并且DockPane会在OnLayout事件中计算好CaptionPane, DockPaneStrip, Splitter以及DockContent的各自位置以其组合出一个完整的UI. 值得注意的是, 在指定DockContent的Parent为DockPane之前, 需要把DockContent的TopLevel设为False, 否则会报错说"无法添加顶级控制"之类的Exception.

  • FloatWindow

事实上, FloatWindow跟DockPane是同等的, 只不过DockPane是附在DockWindow上, 而FloatWindow是一个浮动窗口而已. 显然, FloatWindow是一个Form, DockPanel管理着FloatWindow跟DockPane之间的转换, 而这个转换过程也无非就是把DockContent从FloatWindow转到DockPane上, 或者把DockContent从DockPane转到FloatWindow上, 然后显示出来

 


DockPanel的使用与技巧

DockPanel的使用 1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1。   2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Docking...
  • aabbjj
  • aabbjj
  • 2014年02月17日 10:18
  • 2563

C#开源控件DocKPanel

weiFenLuo.winFormsUI.Docking.dll是开源项目DockPanel Suite的一个类库,可以实现像Visual Studio的窗口停靠、拖拽等功能。 官方下载地址:htt...
  • LEEWENJIN
  • LEEWENJIN
  • 2014年08月21日 15:52
  • 8658

关于C# Dockpanel的一些入门的基本操作

一、引用: 1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1(此处默认为主窗体)。   2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Doc...
  • Lc1996Jm
  • Lc1996Jm
  • 2016年07月11日 15:20
  • 565

C#中如何动态加载DockPanel

因工作需要,在项目中要求实现动态加载DockPanel。 简单研究了下,代码很简单 ----------------------------------------------------------...
  • 36
  • 36
  • 2014年08月01日 16:35
  • 11910

WPF教程(二十七)DockPanel

DockPanel很容易就能把内容停靠到上下左右四个方向上。这个在某些场景显得非常重要,譬如你想把窗口划分成指定区域,除非禁用这个特性,否则,DockPanel中最后一个元素将自动填充剩余的空间。 ...
  • seanbei
  • seanbei
  • 2016年10月27日 20:56
  • 1131

小菜的系统框架界面设计

问题: 在系统开发中,布局界面设计是比较重要的一个环节,我曾在一家甲方公司做过MES开发,见过的系统界面五花八门,有100号人,就有近100种样式,开发的小系统数不清,命名规范更是杂乱无章。所以作为I...
  • dyllove98
  • dyllove98
  • 2013年06月16日 14:08
  • 2390

利用DockPanel与C#制作窗体浮动和停靠(vs2010)

利用DockPanel与C#制作窗体浮动和停靠(vs2010) 点击功能窗  然后鼠标拖动form2的效果图如下: 1。下载的DockPanel。 在SF上能下到最新的版本的DLL和演示。 解压文件...
  • jun502525164
  • jun502525164
  • 2013年06月12日 16:04
  • 20314

Junit框架使用(6)-- 测试套件与Maven测试

随着项目的开展,测试用例会越写越多,
  • jaune161
  • jaune161
  • 2014年10月12日 23:31
  • 1460

WPF 主界面布局中DockPanel的停靠与默认填充

在WPF中,通常的主界面大都是DockPanel 根元素,一次DockPanel .Top主菜单、DockPanel .Top Toolbar、DockPanel .Bottom Statusbar,...
  • Metal1
  • Metal1
  • 2014年03月10日 18:01
  • 11799

MFC控件积累——CDockablePane控件

1.控制多个CDockablePane停靠在一起时,先停靠一个窗口: DockPane(&m_dockPane1); //使用CFrameWndEx::DockPane() void DockP...
  • u011519892
  • u011519892
  • 2014年01月02日 20:30
  • 1866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DockPanel Suit - 1
举报原因:
原因补充:

(最多只允许输入30个字)