3

如何使浮动窗口使用它们的设计尺寸(而不是 Dock Panel Suite 的默认尺寸)与 Weifenluo Dock Panel 套件?

提示:我尝试了来自 SF.net 的 Dock Panel Suite 论坛的提议,但这似乎不起作用。

4

4 回答 4

4

我自己寻找答案时偶然发现了这个问题,发现蒂莫西的答案对我不起作用。

问题是他概述的方法默认情况下也会浮动窗口。(可能是版本差异)

我已经用另一种方式解决了这个问题。我创建了一个从 DockContent 继承的基类,我的所有文档窗口都将从该基类继承。然后,我为处理此问题的 Show 方法创建了另一个重载(我使用 DockPanelSuite 源代码来帮助构建此方法)。

public void Show(DockPanel dockPanel, DockState dockState, Rectangle floatWindowBounds)
{
    Show(dockPanel, dockState); //shows the panel like normal

    //now for the part to initialize the float pane and size
    if (DockHandler.FloatPane == null)
    {
        DockHandler.FloatPane = dockPanel.DockPaneFactory.CreateDockPane(this, DockState.Float, false);
        DockHandler.FloatPane.FloatWindow.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
    }
    DockHandler.FloatPane.FloatWindow.Bounds = floatWindowBounds;
}
于 2012-11-14T17:05:35.743 回答
3

当 CForm 从 DockContent 派生时,我的 MDIContainerWindow 中有一个方法,如下所示

 public void ShowForm(CForm pForm)
    {
        pForm.MdiParent = this;

        Size lS = pForm.Size;
        dockPanel.DefaultFloatWindowSize = lS;

        pForm.Show(dockPanel);
        pForm.VisibleState = DockState.Float;

    }
于 2012-09-20T09:54:56.240 回答
3

这对我有用(在 VB 中):

Dim MyForm As New MyForm
MyForm.Show(DockPanel, New Rectangle(MyForm.Location, MyForm.Size))
MyForm.DockState = DockState.DockRight
于 2015-01-01T10:32:58.440 回答
1

这对我有用:

var topLeft = dockPanel1.Location;
topLeft.X += (dockPanel1.Size.Width / 2 - newForm.Size.Width / 2);
topLeft.Y += (dockPanel1.Size.Height / 2 - newForm.Size.Height / 2);
newForm.Show(dockPanel1, new Rectangle(topLeft, newForm.Size));
于 2011-07-11T21:51:24.777 回答