C# Weifenlou船坞面板套件:使用其设计尺寸的浮动窗?
如何使浮动窗口与Weifenlo Dock Panel套件一起使用其设计尺寸(而不是Dock Panel套件的默认尺寸) 提示:我在SF.net的Dock Panel Suite论坛上尝试了一个建议,但似乎不起作用。这对我很有效:C# Weifenlou船坞面板套件:使用其设计尺寸的浮动窗?,c#,visual-studio-2010,dockpanel-suite,C#,Visual Studio 2010,Dockpanel Suite,如何使浮动窗口与Weifenlo Dock Panel套件一起使用其设计尺寸(而不是Dock Panel套件的默认尺寸) 提示:我在SF.net的Dock Panel Suite论坛上尝试了一个建议,但似乎不起作用。这对我很有效: var topLeft = dockPanel1.Location; topLeft.X += (dockPanel1.Size.Width / 2 - newForm.Size.Width / 2); topLeft.Y += (dockPanel1.Size.He
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;
}
我自己在寻找答案时偶然发现了这个问题,发现提摩太的答案对我不起作用 问题是,他概述的方法在默认情况下也会浮动窗口。(可能是版本不同) 我用另一种方法解决了这个问题。我已经创建了一个基类,该基类从DockContent继承,我的所有文档窗口都将从该基类继承。然后,我为处理这个问题的Show方法创建了另一个重载(我使用DockPanelSuite源代码来帮助构建这个方法) 这对我有用(在VB中):
Chris的解决方案是目前最新的v3.0.2版本(可通过NuGet获得)对我有效的解决方案,只做了以下小修改:DockHandler.FloatPane=dockPanel.Theme.Extender.DockPaneFactory.CreateDockPane(这个,DockState.Float,false);
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;
}
Dim MyForm As New MyForm
MyForm.Show(DockPanel, New Rectangle(MyForm.Location, MyForm.Size))
MyForm.DockState = DockState.DockRight