ToolStripContainerとToolStripPanel

MS-Officeのような上下左右にドッキング可能なメニューを作ろうと思い、ToolStripContainerを使ってみた。
ToolStripContainerのDockをFullにするとできるのだが、MDIの場合に問題がある!

このように、FormがToolStripContainerの下に隠れてしまう。
(ToolStripContainerのDockをFullにした場合、Formが完全に見えなくなる)
MSDNにこれを避けるためのコードがあったが、デザイナ関係なく直接コードで記述してるんで参考にならない。(メニューの中身とかはVisualに作りたいから)
で、ツールボックス上で右クリック-<アイテムの選択>で、ToolStripPanelを追加。
適当に3つToolStripPanelをMDIフォーム上に貼り付ける。(上、左、右用)
左と右用のはOrientationをVerticalにしておく。
デザイン画面でDockプロパティを設定すると、見えなくなってしまうため、デザイン画面上ではDockプロパティを操作しない。
MDIフォームのLoad()内で

private void MDIParent1_Load(object sender, EventArgs e)
{
toolStripPanelTop.Dock = DockStyle.Top;
toolStripPanelLeft.Dock = DockStyle.Left;
toolStripPanelRight.Dock = DockStyle.Right;
}

とし、実行時にちゃんとなるようにしておく。
これで、MDIで動き、かつMS-Officeライクなドッキング可能なメニューができるようになる。
(デザイン画面)

(実行時) 左側に全部ドッキングさせてみた画面

ToolStripContainerはSDI用に便利なコンポーネントって感じ。MDIではToolStripPannelを使うべし。


MEMO(26233)