我有一个FlowLayoutPanel
我在第一次实例化表单时添加控件。在此之后,我向用户显示表单。我想允许用户选中一个复选框,该复选框将更改WrapContents
的{{1}}属性,并重新布局我最初添加到其中的所有控件。
我在FlowLayoutPanel
,SuspendLayout
和ResumeLayout
上阅读了很多帖子,但它们似乎只适用于您最初添加控件的时间,而不是在添加控件之后。
所以我认为解决方案是从面板中删除所有控件,更改PerformLayout
属性,然后在用户选中复选框时重新添加所有控件?这看起来似乎太多了,有没有更简单的方法呢?
答案 0 :(得分:0)
SuspendLayout
/ ResumeLayout
通常在向FlowLayoutPanel
添加控件时使用,并且不希望在每次添加后进行布局。它是暂停,直到你说 resume (甚至可能强迫它)。
在您的情况下,您已准备好控件集合。更改WrapContents
将导致布局(显然),但只会导致布局一次。使用SuspendLayout
/ ResumeLayout
无法获得收益。
如果您在更改WrapContents
后没有立即更新布局,那么您忘记了调用ResumeLayout
的某个地方,它应该被称为暂停相同的次数。
答案 1 :(得分:0)
flowLayoutPanel.FlowDirection = flowLayoutPanel.FlowDirection;
将强制重新渲染。
至于它的优雅......让没有砍掉的人投下第一块石头。