调整面板大小以适合窗体窗体中包含的元素

时间:2011-09-27 20:30:27

标签: winforms panel resize

我正在创建一个可折叠的面板元素,它本质上是一个面板元素,其按钮元素和按钮下方的面板元素。单击该按钮会使相邻面板具有Visible = false。当子面板设置为不可见时,我想调整包含面板的大小。

我已手动完成此操作,方法是将Size属性设置为可见元素(按钮或按钮和子面板)的宽度和高度之和。

我很想知道是否有办法在不手动调用Size的情况下强制调整包含面板的大小。

我想我正在寻找属性Dock=Fill的反转,它会根据元素的大小自动调整元素的大小。

提前致谢。

2 个答案:

答案 0 :(得分:8)

怎么样:

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

然后不是改变可见性,而是执行此操作:

panel1.Controls.Remove(panel2);

当你想要把它带回来时:

panel1.Controls.Add(panel2);

(panel1是后面板)

答案 1 :(得分:4)

我刚试过ispiro给出的答案。您需要删除并添加控件。设置Visible可以正常工作。这取决于您何时执行布局。如果panel2在panel1之前执行布局,则panel2将不会调整大小。为方便起见,请改为使用父母PerformLayout

它的使用方式如下:

panel1.ResumeLayout(false);
panel2.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();