使用 DockPanel Suite 设置垂直停靠优先于水平停靠

Set vertical dock priority over horizontal with DockPanel Suite

我正在使用 DockPanel Suite,但由于文档相对稀少,我 运行 遇到了问题。

我有两个停靠面板:一个停靠在左右两侧,称为 "Side",另一个停靠在底部,称为 "Bottom"。我希望 Side 填充表格的高度,Bottom 填充其余部分。

所以我的目标是:

但我得到的是:

当我 运行 程序时,我得到了第二个变体,如果我将 Bottom 拖出使其浮动,然后将其拖回,它会按我想要的方式停靠,但我不能'无法以编程方式实现此目的。

这是我的代码:

public Form1()
{
    InitializeComponent();

    SideForm side = new SideForm();
    side.Show(dockPanel, DockState.DockRight);

    BottomForm bottom = new BottomForm();
    bottom.Show(dockPanel, DockState.DockBottom);
}

我试过更改顺序,但没有效果。我试过浏览各种属性和方法,但文档不多,因此 IntelliSense 在这里帮不上什么忙。

更新

我试过按照两个人的建议将侧面板放在前面 and/or 将底部面板放在后面,但这没有效果。这是完整的代码:

public Form1()
{
    InitializeComponent();

    SideForm side = new SideForm();
    side.Show(dockPanel, DockState.DockRight);

    BottomForm bottom = new BottomForm();
    bottom.Show(dockPanel, DockState.DockBottom);

    // I've tried enabling these one at a time, and even both at once, no effect
    side.BringToFront();
    bottom.SendToBack();
}

用户 Lex Li 提出了另一个建议,即首先创建一个文档,然后停靠到该文档的底部。这似乎有效,除了现在底部没有window,如下:

这是我用来创建这个的代码:

doc = new Document();
doc.Show(dockPanel, DockState.Document);

side = new SideForm();
side.Show(dockPanel, DockState.DockRight);

bottom = new BottomForm();
bottom.Show(doc.Pane, DockAlignment.Bottom, 0.3);

我可以通过将主停靠面板的 DocumentStyle 属性 设置为 DockingMdiDockingWindow 来避免这种情况:

但是那些选项卡在那里,我不想要;我更喜欢使用 DockingSdi 样式。

所以,我正在尝试以编程方式实现对接到最底部,如下所示: 显示码头的位置...

最后,停靠 window

你试过 Control.BringToFrom() and\or control.SendToBack() 吗?

SideForm side = new SideForm();
side.Show(dockPanel, DockState.DockRight);

BottomForm bottom = new BottomForm();
bottom.Show(dockPanel, DockState.DockBottom);

side.BringToFrom();

bottom.SendToBack();

仅作记录:要更改停靠优先级,您需要自定义 DockWindow 的 Z 顺序。放置这个:

dockPanel.UpdateDockWindowZOrder(DockStyle.Right, true);

在 InitializeComponent() 和子窗体的 creation/docking 之间。