dock停靠管理器
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停靠管理器的更多相关文章
- Clipboard Action for Mac(智能剪贴板历史管理器)破解版安装
1.软件简介 Clipboard Action 是 macOS 系统上一款智能剪贴板历史管理器,它允许剪贴板历史中的每一段内容执行操作.使用 AppleScript 或 Automator 工作 ...
- Sublime Text 3中文乱码解决方法以及安装包管理器方法
一般出现乱码是因为文本采用了GBK编码格式,Sublime Text默认不支持GBK编码. 安装包管理器 简单安装 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令 ...
- BZOJ 4196: [Noi2015]软件包管理器 [树链剖分 DFS序]
4196: [Noi2015]软件包管理器 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1352 Solved: 780[Submit][Stat ...
- 定时管理器框架-Task.MainForm
入住博客园4年多了,一直都是看别人的博客,学习别人的知识,为各个默默无私贡献自己技术总结的朋友们顶一个:这几天突然觉得是时候加入该队列中,贡献出自己微弱的力量,努力做到每个月有不同学习总结,知识学习的 ...
- Swing布局管理器介绍
创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/128174 当选 ...
- Node.js包管理器Yarn的入门介绍与安装
FAST, RELIABLE, AND SECURE DEPENDENCY MANAGEMENT. 就在昨天, Facebook 发布了新的 node.js 包管理器 Yarn 用以替代 npm .咱 ...
- python2.7高级编程 笔记一(Python中的with语句与上下文管理器学习总结)
0.关于上下文管理器上下文管理器是可以在with语句中使用,拥有__enter__和__exit__方法的对象. with manager as var: do_something(var) 相当于以 ...
- java基础 布局管理器
概念: 组建在容器(比如JFrame)中的位置和 大小 是由布局管理器来决定的.所有的容器都会使用一个布局管理器,通过它来自动进行组建的布局管理. 种类: java共提供了物种布局管理器:流式布局管理 ...
- WIN7凭据管理器保存的凭据过段时间会自动删除的解决办法
控制面板\用户帐户和家庭安全\凭据管理器 进入该页面可看到所有凭据
随机推荐
- 3.3 哈尔小波空间W0
在3.2节我们学习了关于(3.8)定义的Vj的性质.特别的,我们可以乘以系数从一个Vj空间变换到另一个.我们这节学习V0和V1的关系. 将f1(t)∈V1投影至V0 我们考虑一个属于V1的函数f1(t ...
- vuejs,router
接下来我们要做的是vue的路由处理,首先当然是安装: npm install vue-router 接下打开我们的main.js,引入我们vue-router,然后在告诉vue我们要使用我们的vue- ...
- 让一个端口同时做两件事:http/https和ssh
相信很多人都在YY:能不能让80端口分析连接协议,如果是http协议就让服务器交给http服务程序(如Apache.Nginx等)处理,如果是ssh协议就交给ssh服务程序(如OpenSSH Serv ...
- 118、通过solid来定义不同边框的颜色,可以只定义一个边框的颜色
以下是设置按钮的右边框和底边框颜色为红色,边框大小为3dp,如下图: 在drawable新建一个 buttonstyle.xml的文件,内容如下: <?xml version="1.0 ...
- 剑指Offer:面试题33——把数组排成最小的数(java实现)(未完待续)
问题描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323. 思路1: ...
- 为什么要使用Mac系统?
1.键盘手感,电脑外形设计轻薄,舒适,金属感比较舒服: 2.Mac炫酷方便的手势操作: 3.Mission Control的多桌面操作,方便切换工作: 4.软件安装卸载方便(相比Windows): 5 ...
- 微信连wifi
微信连wifi 首先需要到微公众平台添加微信连wifi功能插件
- jQuery.ajax()调用asp.net后台方法
利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法.介意方法名不要重名 建一个WebFormAjax名aspx文件 CS <%@ Page Language=" ...
- 【原创】安装LoadRunner12.53 版本时出现Critical error的解决方法
步骤: 1.在官网上下载LoadRunner12.53正版,只不过要注册,然后官网会给个序列号. 2.安装成功之后,快捷键已创建,打开Virtual User Generator时,提示如下错误: 此 ...
- 1,SFDC 开发篇 - 类对象和SOQL查询
1,类对象 & 接口 & 属性 2, Object & SOQL