Weifenluo Dock Panel スイートを使用して、フローティング ウィンドウに (Dock Panel Suite のデフォルト サイズではなく) デザイン サイズを使用させるにはどうすればよいですか?
ヒント: SF.net の Dock Panel Suite フォーラムから提案を試みましたが、うまくいかないようです。
Weifenluo Dock Panel スイートを使用して、フローティング ウィンドウに (Dock Panel Suite のデフォルト サイズではなく) デザイン サイズを使用させるにはどうすればよいですか?
ヒント: SF.net の Dock Panel Suite フォーラムから提案を試みましたが、うまくいかないようです。
自分で答えを探しているときにこの質問に出くわしましたが、ティモシーの答えがうまくいかないことがわかりました。
問題は、彼が概説した方法でもデフォルトでウィンドウが浮いてしまうことでした。(バージョンの違いかもしれません)
私はこれを別の方法で解決しました。すべてのドキュメント ウィンドウが継承する 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;
}
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;
}
これは私のために働いています(VBで):
Dim MyForm As New MyForm
MyForm.Show(DockPanel, New Rectangle(MyForm.Location, MyForm.Size))
MyForm.DockState = DockState.DockRight