MDI子ウィンドウをタブ表示にして切り替える

MDI子ウィンドウをタブ表示にする方法です。
VisualStudioのようにウィンドウをタブ表示にしたいことがあると思いますが
ちょっと工夫して擬似的にこれを実現する方法を書いてみます。

完成のサンプルはこんな感じです

mdi_tab

作り方はTabコントロールを貼り付けているだけなのですが、コツは

1.MDI子ウィンドウが1つ以上ある時だけTabコントロールを表示する
2.Tabコントロールのタブ部分のみ表示する
3.MDI子ウィンドウをTabコントロール上に配置するのではない

です。

あとは
・TabコントロールのSelectedIndexChangedイベントハンドラでActiveな子ウィンドウを切り替え
・親FormのMdiChildActivateイベントハンドラでTabコントロールの選択状態を変更

などの処理を自分で書きます。

これを実現する有料コンポーネントなども見かけましたが
手作りで近いものをこの方法で作れると思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)