web-dev-qa-db-ja.com

ウィンドウフォームに含まれる要素に合うようにパネルのサイズを変更する

折りたたみ可能なパネル要素を作成しています。これは基本的に、ボタン要素とボタンの下にパネル要素があるパネル要素です。ボタンをクリックすると、隣接するパネルにVisible = falseが表示されます。子パネルが非表示に設定されているときに、含まれているパネルのサイズを変更したいと思います。

Sizeプロパティを表示要素(ボタンまたはボタンと子パネルのいずれか)の幅と高さの合計に設定することにより、これを手動で行いました。

手動でSizeを呼び出さずに、含まれているパネルのサイズを強制的に変更する方法があるかどうか知りたいのですが。

プロパティDock=Fillの逆を探していると思います。これは、含まれている要素のサイズに基づいて要素のサイズを自動的に変更します。

前もって感謝します。

11
user420667

やってみませんか:

panel1.Size = new Size(0, 0);
panel1.AutoSize = true;

次に、可視性を変更する代わりに、次のようにします。

panel1.Controls.Remove(panel2);

そしてそれを持ち帰りたいとき:

panel1.Controls.Add(panel2);

(panel1は背面パネルです)

9
ispiro

ispiro の答えを試してみました。あなたdontは、コントロールを削除して追加する必要があります。 Visibleの設定は機能します。いつレイアウトを実行するかによって異なります。 panel2がpanel1の前にレイアウトを実行する場合、panel2はサイズ変更されません。簡単にするために、代わりに親PerformLayoutを使用してください。

これは次のように使用されます:

panel1.ResumeLayout(false);
panel2.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
4
Jeson Martajaya