DockPanel中提供了几个可用的类, 重要的有两个, 一是DockPanel, 二是DockContent。
DockPanel是从panel继承出来的, 用于提供可浮动的dock的子窗口进行浮动和dock的场所,
DockContent是从form类中继承出来的, 用于提供可浮动的窗口基类. 就是说:DockContent对象可以在DockPanel对象中任意贴边, 浮动, TAB化等.
1.建立一个WinForm工程,默认生成了一个WinForm窗体Form1。
2.引用—>添加引用—>浏览—> WinFormsUI.Docking.dll。(.dll 文件为.Net项目中组件样式文件)
3.窗体属性IsMdiContainer设置为True。
4.工具箱—>右键—>选择项—>.net组件—>浏览—> WinFormsUI.Docking.dll—>在工具箱出现DockPanel。
5.将DockPanel拖到窗体Form1上,设置Dock属性,我设置的是:Fill。
停靠窗体:
1.新建一个WinForm窗体Form2。
2.在代码中修改窗体继承于DockContent。
public partial class Form2 : DockContent
{
Form1 form1;
private DockPanel dp;
public Form2()
{
InitializeComponent();
}
public Form2(Form1 fm1)
{
form1 = fm1;
dp =(DockPanel)form1.Controls["dockPanel1"];
}
}
3.在主窗体Form1中显示停靠窗体。
private void Form1_Load(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show(this.dockPanel1, DockState.DockLeft);
}
注意项:
拖动:如果你想使你的子窗体可以任意拖动,那么你在设置子窗体的DockAreas属性时,保持默认值,不要修改。
固定:只需设置你窗体的DockAreas为Document就行了
判断Dockpanel中存在多少个子窗体或Contents
foreach (DockContent frm in this.dockPanel1.Contents)
{
//这样设置后,所有的继承与DockContent的窗体都会被计算在内的
}