C# 入門

ホーム > C# の各種トピック > コントロールの Dock プロパティに Fill を設定した時に重なる時の対処方法

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

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

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

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

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

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

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

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

この場合は、全体を表示したいコントロールを前面に持ってきます。

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

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

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

ホーム > C# の各種トピック > コントロールの Dock プロパティに Fill を設定した時に重なる時の対処方法