コントロールの Dock プロパティに Fill を設定した時に、コントロールが重なる時の対処方法

フォームのサイズに合わせて、そのフォーム上のコントロールのサイズも自動的にリサイズしたい時には、 コントロールの Dock プロパティを使うと便利です。

例えば Dock プロパティに Fill を設定すると、 コンテナとなるコントロールの描画領域全体を埋める (Fill) するようにコントロールがリサイズされます。

ところが、これがうまく行かずコントロールが重なる場合があります。

例えばひとつのフォーム内に、上部に Panel があり、その下に DataGridView があり、 Panel の Dock プロパティを Top に設定して、DataGridView を Fill にします。

期待している動作としては、実行時に次のようになることです。

上にパネルの分だけ余白があり、下側にグリッドが表示されています。

ところが、次のようにグリッドがパネルに重なるようにめり込む場合があります。

この場合、どうすればよいでしょうか。

対処方法:コントロールを前に持ってくる

この場合は、全体を表示したいコントロールを前面に持ってきます。Visual Studio にそういうオプションがあります。

前に持ってきたいコントロールの上で右クリックして、コンテキストメニューを開きます。

これで期待した動作になるはずです。こうした作業はパワーポイント等でオブジェクトが裏に隠れてしまう場合にも、同じようにやりますよね。 同じ要領でコントロールの表示順番を指定できます。

もし、コントロールの状態が複雑でこれでうまくできない場合には、コンテナとなるコントロールへの追加順序を変更することで問題を回避できます。

ただし、Visual Studio のデザイナが自動的に挿入するコードを手作業で直しても、デザイナが勝手にコードを上書きしてしまう場合がありますので、 なるべく GUI から操作するようにしましょう。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 C# 入門