【问题标题】:Set vertical dock priority over horizontal with DockPanel Suite使用 DockPanel Suite 设置垂直停靠优先于水平停靠
【发布时间】:2015-04-25 14:37:32
【问题描述】:

我正在使用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 在这里没有太大帮助。

更新

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

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 提出了另一个建议,即首先创建一个文档,然后停靠在该文档的底部。这似乎可行,只是现在底部窗口中没有,如下:

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

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 样式。

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

最后,停靠窗口

【问题讨论】:

  • 我没有使用过side DockPanel Suite,但你有没有尝试过类似的东西:side.BringToFrom(); bottom.SendToBack();
  • 是的,我都试过了。没有效果。

标签: c# winforms docking dockpanel-suite


【解决方案1】:

您是否尝试过 Control.BringToFrom() 和\或 control.SendToBack()?

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

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

side.BringToFrom();

bottom.SendToBack();

【讨论】:

  • 是的,我试过了,但是放在前面或放在后面都没有任何效果。
  • 我用那个代码试过了,你能分享完整的代码吗?
【解决方案2】:

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

dockPanel.UpdateDockWindowZOrder(DockStyle.Right, true);

在 InitializeComponent() 和子窗体的创建/停靠之间。

【讨论】:

  • 哇,这正是我想要的方式!谢谢一百万!
猜你喜欢
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 2019-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
相关资源
最近更新 更多