一、停靠状态 DockState
(1)DockPanelSuite能像VS一样窗口自由停靠和组合,可以通过设置DockState的状态,来改变窗口停靠的位置。
DockState.Unknown | 未知 |
DockState.Float | 浮动 |
DockState.DockTopAutoHide | 顶部停靠,自动隐藏 |
DockState.DockLeftAutoHide | 左边停靠,自动隐藏 |
DockState.DockBottomAutoHide | 底部停靠,自动隐藏 |
DockState.DockRightAutoHide | 右边停靠,自动隐藏 |
DockState.Document | 文档 |
DockState.DockTop | 顶部停靠 |
DockState.DockLeft | 左边停靠 |
DockState.DockBottom | 底部停靠 |
DockState.DockRight | 右边停靠 |
DockState.Hidden | 隐藏 |
通过调用Show(DockPanel dockPanel, DockState dockState),可以设置窗口显示时的停靠状态,不能设置为Unknown和Hidden,并且同一dockPanel或者DockPane里只有Document状态可以设置多次,例如在dockPanel1里设置的多个窗口状态为DockTop就会报错。
Form2是继承自DockContent的窗体,添加如下代码:
var f2 = new Form2() { TabText = "Document" };
f2.Show(this.dockPanel1, DockState.Document);
f2 = new Form2() { TabText = "DockLeft" }; ;
f2.Show(this.dockPanel1, DockState.DockLeft);
f2 = new Form2() { TabText = "DockRight" }; ;
f2.Show(this.dockPanel1, DockState.DockRight);
f2 = new Form2() { TabText = "DockBottom" }; ;
f2.Show(this.dockPanel1, DockState.DockBottom);
f2 = new Form2() { TabText = "DockTop" };
f2.Show(this.dockPanel1, DockState.DockTop);
f2 = new Form2() { TabText = "DockLeftAutoHide" }; ;
f2.Show(this.dockPanel1, DockState.DockLeftAutoHide);
f2 = new Form2() { TabText = "DockRightAutoHide" };
f2.Show(this.dockPanel1, DockState.DockRightAutoHide);
f2 = new Form2() { TabText = "DockBottomAutoHide" };
f2.Show(this.dockPanel1, DockState.DockBottomAutoHide);
f2 = new Form2() { TabText = "DockTopAutoHide" } ;
f2.Show(this.dockPanel1, DockState.DockTopAutoHide);
Form2= new Form2() { TabText = "Test" };
Form2.Show(this.dockPanel1, DockState.Float);
窗体显示布局如下:
(2)已经显示的窗口仍然可以通过调用Show(DockPanel dockPanel, DockState dockState)改变停靠位置
(3)要按顺序显示一列多文档,可以使用如下
var doc1 = new Form2() { TabText = "doc1" };
doc1.Show(this.dockPanel1, DockState.Document);
var doc2 = new Form2() { TabText = "doc2" };
doc2.Show(doc1.Pane, null);
var doc3 = new Form2() { TabText = "doc3" };
doc3.Show(doc1.Pane, null);
文档按选项卡的形式排列:
二、停靠区域 DockAreas
拖动窗口停靠能够自由停靠固然好,但有时不希望窗口停靠在某个位置,可以通过DockContent.DockAreas来限制拖动停靠的位置。
例如取消窗口的左右停靠
运行拖动窗口,可以看到只能停靠在上下,左右停靠的提示消失了,但是中间嵌套的位置依然能上下左右停靠。
三、禁止拖动
(1)想禁止整个布局拖动,可以设置属性AllowEndUserDocking来锁定布局
dockPanel.AllowEndUserDocking = false;
(2)如果只想设置某一个窗口不允许拖动,可以设置单个窗口属性DockHandler来锁定窗口
dockContent.DockHandler.AllowEndUserDocking = false;
四、窗口嵌套
窗口是支持多级嵌套的,但是要注意同一级的窗口上能有多个Document状态的窗口,其他状态的窗口只能有一个。
如果不想窗口嵌套可以设置dockPanel属性,设置后窗口只一级,不允许再嵌套。
dockPanel.AllowEndUserNestedDocking=false;