DockManager停靠管理器可以对它所拥有的 停靠面板 的行为和外观设置进行集中控制。
DockPanel停靠面板是停靠应用程序的主要构成部件。

常规面板 DockPanel.ParentPanel 属性。 如果该属性返回 null,
容器面板: 分隔式容器 (split containers) 和标签式容器 (tab containers)。
DockPanel.Tabbed 属性
要确定某个特定的面板是否为常规面板还是容器面板,可以读取它的 DockPanel.Count
由于可能导致冲突,因此不要把多个停靠管理器放置在一个窗体/用户控件中。
而是使用单个停靠管理器,或使用多个被显示在各自主控 UserControl 对象内的停靠管理器。
DockingOptions.CloseActiveTabOnly 应用于标签式容器中的停靠面板。
指明在单击关闭按钮时,标签式容器本身或其活动面板是否被隐藏。
停靠管理器拥有的所有停靠面板都可以通过 DockManager.Panels 集合,
或者通过应用于 DockManager 对象的索引器符号进行访问。 此集合包含了所有常规面板和容器面板 (已隐藏的、自动隐藏的和可视的)。

对于常规(非容器)面板,如果调用 DockPanel.AddPanel 方法,
则此方法将创建一个新的包含了当前面板和新建面板的分隔式容器。
对于分隔式容器或标签式容器,如果调用 DockPanel.AddPanel 方法,
则此方法将把一个新的子面板追加到该容器中,该容器将包含新建的面板。

只需要获得已隐藏的面板,则可以使用 DockManager.HiddenPanels 属性。
所有可视的浮动面板和被停靠到窗体中的面板都被称为根面板,
并且可以通过 DockManager.RootPanels 集合访问它们。
通过 DockManager.RootPanels 集合来访问可视的浮动面板。
DockPanel.MakeFloat 使已有的面板浮动

获取所有面板信息:

[csharp]
StringBuilder sb = new StringBuilder();

if (docMain.ActivePanel != null)
{
sb.AppendLine("当前活动的页签文本是:" + docMain.ActivePanel.Text);
}
sb.AppendFormatLine("当前面板个数为:", docMain.Panels.Count);
int containerCount = 0;
int panelCount = 0;
for (int i = 0; i < docMain.Panels.Count; i++) { DockPanel pnl = docMain.Panels[i]; if (pnl.Count > 0)
{
containerCount++;
}
else
{
panelCount++;
}
}
sb.AppendFormatLine("容器数:{0},普通面板数:{1}", containerCount, panelCount);

[/csharp]

面板的基本操作:

[csharp]
/// 创建面板,添加控件
 UcTestDock uc = new UcTestDock();
 uc.Dock = DockStyle.Fill;
 DockPanel pnl = docMain.AddPanel(DockingStyle.Float);
 pnl.ControlContainer.Controls.Add(uc);
 pnl.Text = "第1面板";
 uc.SetText(pnl.Text);

 DockPanel pnl2 = pnl.AddPanel();
 uc = new UcTestDock();
 uc.Dock = DockStyle.Fill;
 pnl2.ControlContainer.Controls.Add(uc);
 pnl2.Text = "第2面板";
 uc.SetText(pnl2.Text);
 pnl2.Options.ShowAutoHideButton = false;
 pnl2.Options.ShowCloseButton = false;
 pnl2.Options.ShowMaximizeButton = false;

 pnl2 = pnl.ParentPanel.AddPanel();
 uc = new UcTestDock();
 uc.Dock = DockStyle.Fill;
 pnl2.ControlContainer.Controls.Add(uc);
 pnl2.Text = "第3面板";
 uc.SetText(pnl2.Text);

 pnl2 = pnl.ParentPanel.AddPanel();
 uc = new UcTestDock();
 uc.Dock = DockStyle.Fill;
 pnl2.ControlContainer.Controls.Add(uc);
 pnl2.Text = "第4面板";
 uc.SetText(pnl2.Text);
 /// 控制按钮的显示
 pnl2.Options.ShowAutoHideButton = false;
 pnl2.Options.ShowCloseButton = false;
 pnl2.Options.ShowMaximizeButton = false;

 pnl2 = pnl.ParentPanel.AddPanel();
 uc = new UcTestDock();
 uc.Dock = DockStyle.Fill;
 pnl2.ControlContainer.Controls.Add(uc);
 pnl2.Text = "第5面板";
 uc.SetText(pnl2.Text);

 pnl.ParentPanel.Text = "zhu5";
 /// 设置为标签式容器
 pnl2.ParentPanel.Tabbed = true;

 /// 更改位置和大小
 pnl2.ParentPanel.FloatLocation = new Point(400, 200);
 pnl2.ParentPanel.FloatSize = new System.Drawing.Size(500, 500);

 /// 更改页签顺序
 ((DockPanel)(pnl2.ParentPanel.Controls[2])).Index = 1;
 ((DockPanel)(pnl2.ParentPanel.Controls[0])).Index = 4;

 /// 显示指定面板
 ((DockPanel)(pnl2.ParentPanel.Controls[2])).Show();

 /// 是否只关闭活动的页签
 docMain.DockingOptions.CloseActiveFloatTabOnly = true;
[/csharp]

dock停靠管理器的更多相关文章

  1. Clipboard Action for Mac(智能剪贴板历史管理器)破解版安装

    1.软件简介    Clipboard Action 是 macOS 系统上一款智能剪贴板历史管理器,它允许剪贴板历史中的每一段内容执行操作.使用 AppleScript 或 Automator 工作 ...

  2. Sublime Text 3中文乱码解决方法以及安装包管理器方法

    一般出现乱码是因为文本采用了GBK编码格式,Sublime Text默认不支持GBK编码. 安装包管理器 简单安装 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令 ...

  3. BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]

    4196: [Noi2015]软件包管理器 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1352  Solved: 780[Submit][Stat ...

  4. 定时管理器框架-Task.MainForm

    入住博客园4年多了,一直都是看别人的博客,学习别人的知识,为各个默默无私贡献自己技术总结的朋友们顶一个:这几天突然觉得是时候加入该队列中,贡献出自己微弱的力量,努力做到每个月有不同学习总结,知识学习的 ...

  5. Swing布局管理器介绍

    创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/128174 当选 ...

  6. Node.js包管理器Yarn的入门介绍与安装

    FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱 ...

  7. python2.7高级编程 笔记一(Python中的with语句与上下文管理器学习总结)

    0.关于上下文管理器上下文管理器是可以在with语句中使用,拥有__enter__和__exit__方法的对象. with manager as var: do_something(var) 相当于以 ...

  8. java基础 布局管理器

    概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...

  9. WIN7凭据管理器保存的凭据过段时间会自动删除的解决办法

    控制面板\用户帐户和家庭安全\凭据管理器 进入该页面可看到所有凭据

随机推荐

  1. 一款好用且免费的语句分析工具Plan Explorer

    在调优过程中的查询语句优化阶段,分析语句的执行计划是必经之路,一款好的执行计划分析工具确实可以帮助我们事半功倍 小贴士:Plan Explorer是将Plan Explorer 专业版与免费版整合在一 ...

  2. Python的第四天

    函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函 ...

  3. 给flash添加A链接

    项目中,曾有一个需求,给flash广告添加链接,跳转到另一个网站.于是直接在html的flash object前面加上<a href="url">,发现链接不起作用. ...

  4. OAF_开发系列06_实现OAF属性集的介绍和开发Attribute Set(案例)

    20150705 Created By BaoXinjian

  5. 前后台读取Web.config中的值的方法

    webconfig <configuration> <appSettings> <add key="Workflow_Url" value=" ...

  6. 再看 AspriseOCR - OCR应用开发 -20151124

    再看 AspriseOCR - OCR应用开发 我写这个博文时间为 2015/11/24日,注意时间因为,网上很多文章时间上很久远,有的已经不能参考了 很多人面对从图片中识别文字或者数字0~9  A~ ...

  7. oracle中having的用法

    having的用法,having一般是用在group的后面,用在前面查询结果相同,但是语法上不通顺.答:having是对行组进行过滤.一般是先用where 过滤返回行,用group by 对过滤后的行 ...

  8. reference local jar & customize manifest

    dependencies { compile files('libs/ghost4j-0.5.1.jar') compile files('libs/jai_imageio.jar') compile ...

  9. oracle数据库中的基本语句

    下面的都是最基本的oracle数据库的数据查询语句,这是我在网上整理的一份文档,方便以后自己的查看,当然,能把这些记下来就是最好的. 说明:查询表中的数据 1. select * from emp; ...

  10. artTemplate 自动化编译之tmod

    一.背景 前端小白的成长历程,一般都会经历html模板的一些问题,jquery template/artTemplate/yayaTemplate等常见的模板使用,这里就不作介绍了. 先谈谈我们为什么 ...