【C#】MDIフォームにリサイズ可能なPanelを設置する

普通のFormに実行中に幅や高さを変えられるパネルを設置する場合は、SplitContainerを配置すればOKですが、MDIフォーム↓に

mdiフォームにリサイズ可能なPanelを設置する

SplitContainerを配置すると、

mdiフォームにリサイズ可能なPanelを設置する

のようになり、MDIフォームの子フォームの配置する領域(濃いグレーの部分)がPanelで埋まってしまうため、MDIフォームの機能をなしてくれません。

そこで、この場合のみSplitterの登場となります。

以下、MDIフォームの右側にリサイズ可能はPanelを配置する例で示します。

まず、MDIフォームにPanelを配置します。

mdiフォームにリサイズ可能なPanelを設置する

このPanelを右側にDockします。

mdiフォームにリサイズ可能なPanelを設置する

すると、MDIフォームの右側にPanelが配置されます。

mdiフォームにリサイズ可能なPanelを設置する

この状態だと、まだ、リサイズしてくれないので、次にSplitterを配置します。

すると、Splitterはデフォルトでは左側にDockされてしまうため、Dockプロパティを右(Right)に設定します。

mdiフォームにリサイズ可能なPanelを設置する

Splitterが右側に配置された様子↓

mdiフォームにリサイズ可能なPanelを設置する

この状態で実行すると、リサイズ可能なPanelとなります。

mdiフォームにリサイズ可能なPanelを設置する

しかしながら、MSDNを見るとSplitterは互換性のために残してあるだけで、新規にプログラムを作るときは使わないようにと書いてあります。

いつまで、この方法が使えるかは、かなり怪しいところではありますが、現状、MDIフォームにリサイズできるパネルを配置するには、この方法しか無いと思われ。。

C#へ戻る

コメント

  1. ミキ より:

    SplitContainerを使ってうまくいかず悩んでいました。PanelとSplitterを組み合わせて使うとできるんですね~。助かりました。ありがとうございました。

    • akira より:

      ミキさん、コメント頂きありがとうございます。
      私はMDIでパネル幅を可変にするには、この方法しか知らないのですが、あくまでもSpilitterが非推奨という事だけはご了承下さい。