如何使浮動窗戶使用Weifenluo Dock Panel套件的設計尺寸(而不是Dock Panel Suite的默認尺寸)?Weifenluo Dock Panel Suite:使用其設計尺寸的浮動窗戶?
提示:我試圖從SF.net的Dock Panel Suite論壇提出一個建議,但這似乎不起作用。
如何使浮動窗戶使用Weifenluo Dock Panel套件的設計尺寸(而不是Dock Panel Suite的默認尺寸)?Weifenluo 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;
}
尋找,當我遇到這個問題絆倒我自己的答案,並發現蒂莫西的答案不適合我。
問題是,他概述的方法也默認浮動窗口。 (也許這是一個版本的差異)
我已經解決了另一種方式。我創建了一個從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;
}
這是爲我工作(在VB):
Dim MyForm As New MyForm
MyForm.Show(DockPanel, New Rectangle(MyForm.Location, MyForm.Size))
MyForm.DockState = DockState.DockRight
這在C#中爲我工作,以及 – TheColonel26 2015-04-03 17:01:45