使用 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
属性 设置为 DockingMdi
或 DockingWindow
来避免这种情况:
但是那些选项卡在那里,我不想要;我更喜欢使用 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 之间。
我正在使用 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
属性 设置为 DockingMdi
或 DockingWindow
来避免这种情况:
但是那些选项卡在那里,我不想要;我更喜欢使用 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 之间。