一、引用:
1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1(此处默认为主窗体)。
2.引用—>添加引用—>浏览—>weiFenLuo.winFormsUI.Docking.dll。
3.设置Form1窗体属性IsMdiContainer:True。
4.工具箱—>右键—>选择项—>.net组件—>浏览—>weiFenLuo.winFormsUI.Docking.dll—>在工具箱出现dockPanel。
5.将dockPanel拖到窗体主窗体上,设置Dock属性,一般默认设置为:Fill。
二、设置停靠窗体:
1.新建一个WinForm窗体。
2.在代码中修改窗体继承于DockContent。如下:
using WeifenLuo.WinFormsUI.Docking;
public partial class Form2 : DockContent
3.在主窗体中显示停靠窗体。
在要显示停靠窗体的事件中写入以下代码:
Private void 事件名(){ Form2 form2 = new Form2(); form2.Show(停靠的父容器,DockState.要停靠的方位); }
三、设置窗体浮动:
1、设置需要浮动的窗体的Dock中的DockAreas属性。
四、关闭当前容器中的所有窗体
1、获取到当容器中的所有子窗体的个数:
dockPanel1.Contents.Count;
2、获取容器中的所有对象的数组,并将其转换为
IDockContent对象:
IDockContent content =(IDockContent)dockPanel1.Contents[index];
3、循环关闭:
for (int index = dockPanel1.Contents.Count;index > 0; index--) { if(dockPanel1.Contents[index] isIDockContent) { IDockContent content =(IDockContent)dockPanel1.Contents[index]; content.DockHandler.Close();}}
五、关闭除当前正在活动的子窗体之外得到所有子窗体:
1、获取当前正在活动的子窗体对象:
this.ActiveMdiChild;
2、遍历容器中的子窗体,并判断是否为当前正在活动的窗体,不是则关闭:
if (this.ActiveMdiChild != null) { //判断是否有子窗体 foreach (Form f in this.MdiChildren) {//获取子窗体 if (f != this.ActiveMdiChild) { f.Close(); }//判断是否为当前选定窗口 } }
六、更改窗体风格:
1、下载要设置风格的资源库或相关控件。例如: vS2005Theme、vS2003Theme、vS2012LightTheme;
然后将要更改风格的DockPanel控件的Theme属性设置为相应的控件名。例:
dockPanel1.Theme = vS2003Theme2;
如果要更改主窗体的风格,则要下载vS2012ToolStripExtender控件。
vS2012ToolStripExtender1.SetEnableVS2012Style(要更改的控件, true);
七、更改窗体的样式:
1.获取并记录当前样式:
DocumentStyle oldStyle = dockPanel1.DocumentStyle;//记录旧的样式
2.定义新样式对象并为其赋值要更改的样式:
DocumentStyle newStyle=要更改的样式(DocumentStyle.样式);
3、设置新的样式:
要更改样式的窗体.
DocumentStyle=newStyle;
八、记录当前窗体布局:
1.定义一个正在窗体关闭事件:
private void MainForm_FormClosing(object sender FormClosingEventArgse){ .......... }
2.在事件在写入记录当前窗体布局的代码,如下:
configFile =Path.Combine(Path.GetDirectoryName(Application.ExecutablePath),"DockPanel.config");
dockPanel1.SaveAsXml(configFile);
3、如果下载打开窗体需要加载上一次的退出时的布局,则在窗体加载事件中写入以下代码:
configFile =Path.Combine(Path.GetDirectoryName(Application.ExecutablePath),"DockPanel.config"); if(File.Exists(configFile)) { dockPanel1.LoadFromXml(configFile, ddc); }
补充知识:winform DockPanel的用法
DockPanel中提供了几个可用的类,重要的有两个:DockPanel和DockContent。
DockPanel是从panel继承出来的,用于提供可浮动的dock的子窗口进行浮动和dock的场所, DockContent是从form类中继承出来的,用于提供可浮动的窗口基类.就是说: DockContent对象可以在DockPanel对象中任意贴边,浮动, TAB化等。
WeifenLuo.WinFormsUI.Docking.dll的使用方法:
1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1;
2.引用—>添加引用—>浏览—>WeifenLuo.WinFormsUI.Docking.dll,最好是先把WeifenLuo.WinFormsUI.Docking.dll拷贝到项目目录下面,方便以后创建安装文件;
3.设置窗体(Form1)属性IsMdiContainer为True;
4.工具箱—>右键—>选择项—>.net组件—>浏览—>WeifenLuo.WinFormsUI.Docking.dll—>在工具箱出现dockPanel;
5.将DockPanel拖到窗体Form1上,设置Dock属性,我设置的是:Fill;
6.新建一个WinForm窗体,如:数据集信息左侧;
7.设置JReductBtree压缩树类继承DockContent,public partial class 数据集信息左侧 : DockContent
8.在JReductBtree压缩树类中添加using WeifenLuo.WinFormsUI.Docking;
9.在主窗体Form1中显示停靠窗体,代码如下:
public void MainWindow_Load(object sender, EventArgs e) { 数据集信息左侧 tingkaoLeftWindow = new 数据集信息左侧(); tingkaoLeftWindow.Show(this.dockPanel1, WeifenLuo.WinFormsUI.Docking.DockState.DockLeft); 数据集内容 shujujiLoad = new 数据集内容(); shujujiLoad.Show(this.dockPanel1); }
说明:
tingkaoLeftWindow.Show(this.dockPanel1, WeifenLuo.WinFormsUI.Docking.DockState.DockLeft);
表示打开主窗体的时候 tingkaoLeftWindow 在主窗体的左边显示;
shujujiLoad.Show(this.dockPanel1);
表示 shujujiLoad 作为标签页显示。
运行后的样式如下图:
以上这篇C# Dockpanel入门基础必看篇就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持自由互联。