折りたたみ可能なパネル要素を作成しています。これは基本的に、ボタン要素とボタンの下にパネル要素があるパネル要素です。ボタンをクリックすると、隣接するパネルにVisible = false
が表示されます。子パネルが非表示に設定されているときに、含まれているパネルのサイズを変更したいと思います。
Size
プロパティを表示要素(ボタンまたはボタンと子パネルのいずれか)の幅と高さの合計に設定することにより、これを手動で行いました。
手動でSize
を呼び出さずに、含まれているパネルのサイズを強制的に変更する方法があるかどうか知りたいのですが。
プロパティDock=Fill
の逆を探していると思います。これは、含まれている要素のサイズに基づいて要素のサイズを自動的に変更します。
前もって感謝します。
やってみませんか:
panel1.Size = new Size(0, 0);
panel1.AutoSize = true;
次に、可視性を変更する代わりに、次のようにします。
panel1.Controls.Remove(panel2);
そしてそれを持ち帰りたいとき:
panel1.Controls.Add(panel2);
(panel1は背面パネルです)
ispiro の答えを試してみました。あなたdontは、コントロールを削除して追加する必要があります。 Visible
の設定は機能します。いつレイアウトを実行するかによって異なります。 panel2がpanel1の前にレイアウトを実行する場合、panel2はサイズ変更されません。簡単にするために、代わりに親PerformLayout
を使用してください。
これは次のように使用されます:
panel1.ResumeLayout(false);
panel2.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();