我正在创建一个可折叠的面板元素,它本质上是一个面板元素,其按钮元素和按钮下方的面板元素。单击该按钮会使相邻面板具有Visible = false
。当子面板设置为不可见时,我想调整包含面板的大小。
我已手动完成此操作,方法是将Size
属性设置为可见元素(按钮或按钮和子面板)的宽度和高度之和。
我很想知道是否有办法在不手动调用Size
的情况下强制调整包含面板的大小。
我想我正在寻找属性Dock=Fill
的反转,它会根据元素的大小自动调整元素的大小。
提前致谢。
答案 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();