Weifenluo Dock Panel Suite:浮动窗户的设计尺寸?
如何使浮动窗口使用Weifenluo Dock Panel套件的设计尺寸(而不是Dock Panel Suite的默认尺寸)?
提示:我在SF.net的Dock Panel Suite论坛上尝试了一个命题,但这似乎不起作用。
这对我有用:
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));
当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; }
我自己找到答案时偶然发现了这个问题,并发现蒂莫西的回答不适合我。
问题是他概述的方法默认也会浮动窗口。 (也许这是版本差异)
我已经解决了另一种方式。 我创建了一个inheritance自DockContent的基类,我的所有文档窗口都将从该基类inheritance。 然后我为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; }
这对我有用(在VB中):
Dim MyForm As New MyForm MyForm.Show(DockPanel, New Rectangle(MyForm.Location, MyForm.Size)) MyForm.DockState = DockState.DockRight