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. AngularJS---表达式

    AngularJS的表达式是放在{{}}里面,用{{ }}符号将一个变量绑定到$scope上. angularJS中的表达式有如下特点: 1.只能在其所属作用域内部 所有的表达式都在其所属的作用域内部 ...

  2. js预解析及特效

    预解析: // 作用域: // 域:空间.范围.区域…… // 作用:读.写 script 全局变量.全局函数 自上而下 函数 由里到外 {} 浏览器: “JS解析器” 1)“找一些东西” :var ...

  3. (C++) Include 文件

    1. <> 和 "" 的区别. 2. 有个技巧就是把.h 文件放到 stdafx.h 中,这样很多时候,就不用重复的引用头文件了..因为 stdafx.h 基本上每个头 ...

  4. BestCoder Round #90 A.Kblack loves flag(随机数生成种子)

    A.Kblack loves flag [题目链接]A.Kblack loves flag [题目类型]水题 &题意: kblack喜欢旗帜(flag),他的口袋里有无穷无尽的旗帜. 某天,k ...

  5. 分配和释放 BSTR 的内存

    本文档已存档,并且将不进行维护. 分配和释放 BSTR 的内存 Visual Studio .NET 2003                  转自: https://msdn.microsoft. ...

  6. H5的一些小问题

    [每日壹闻]常用HTML代码解释-------六.歌曲代码(1):在这组代码中,不必管它是mms.http.rtsp,只要看尾缀是asf.wma.wmv.wmv.rm都可适用下面的代码:1. 手动播放 ...

  7. 【转】PL/SQL Developer各个窗口的功能

    源地址:http://www.codeweblog.com/pl-sql-developer%E5%90%84%E4%B8%AA%E7%AA%97%E5%8F%A3%E7%9A%84%E5%8A%9F ...

  8. 利用微软AntiXss Library过滤输出字符,防止XSS攻击

    假如项目在前期没有过滤客户提交的字符,那么可以在输出的时候,对输出的字符进行过滤,防止出现XSS跨域攻击. 原理简单:利用ASP.NET API的管道原理,在MessageHandlers中添加一个自 ...

  9. 数据结构与算法(1)支线任务2——Basic Calculator

    题目:https://leetcode.com/problems/basic-calculator/ Implement a basic calculator to evaluate a simple ...

  10. EF文章连接

    http://www.cnblogs.com/shanyou/archive/2011/07/17/2108953.html http://www.cnblogs.com/haogj/archive/ ...