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. 工程中建立多个src目录

    android 工程下可以有多个源代码的目录,不一定都要放到src下面.可以在 .classpath 文件中添加. 默认是这样的: <classpath> <classpathent ...

  2. jQuery源码:从原理到实战

    jQuery源码:从原理到实战 jQuery选择器对象 $(".my-class"); document.querySelectorAll*".my-class" ...

  3. 在sql脚本中获取变量中的查询结果

    )--变量 ) set @itemValue='select @a=getdate()'--赋值 exec sp_executesql @itemValue,N'@a nvarchar(max) ou ...

  4. 解决 connect to host github.com port 22 operation timed out

    本来好好地.不知道为什么不能push了.估计是被墙,于是搜搜解决办法.改换端口 参考 https://mozillazg.com/2015/08/use-443-port-fix-github-con ...

  5. 每天一个 Linux 命令(18):locate 命令

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...

  6. PHP表单数据验证

    背景: 在上次项目的时候,一直不明白为什么要对数据验证,我能保证我每次请求的数据都是合法的,但是在后面的时候,原来“用户”并不是那样听话,他总是要给我们找麻烦,然后可能让我们的服务器崩掉.但是只对单个 ...

  7. Python操作Excel之xlwt

    #写入import xlwtworkbook=xlwt.Workbook()sheetn=workbook.add_sheet(u"测试数据",cell_overwrite_ok= ...

  8. linux mutext spinlock 性能分析

    http://www.parallellabs.com/2010/01/31/pthreads-programming-spin-lock-vs-mutex-performance-analysis/ ...

  9. 浅谈lua

    Lua脚本语言,关于它的介绍及优点特性,跨平台啊等等,在百度上可以搜索到很多,所以我就不再这里细说了.我主要想说的是lua在嵌入到应用程序中之后.. lua是按照标准的c/c++写的.当然它同样是可以 ...

  10. Autoit 在word中绘图

    没有时间整理,直接看参考网址: http://www.autoitx.com/thread-257-1-1.html