强制FlowLayoutPanel在添加和排除之前重新布局所有控件

时间:2014-05-12 11:46:09

标签: c# forms user-interface controls

我有一个FlowLayoutPanel我在第一次实例化表单时添加控件。在此之后,我向用户显示表单。我想允许用户选中一个复选框,该复选框将更改WrapContents的{​​{1}}属性,并重新布局我最初添加到其中的所有控件。

我在FlowLayoutPanelSuspendLayoutResumeLayout上阅读了很多帖子,但它们似乎只适用于您最初添加控件的时间,而不是在添加控件之后。

所以我认为解决方案是从面板中删除所有控件,更改PerformLayout属性,然后在用户选中复选框时重新添加所有控件?这看起来似乎太多了,有没有更简单的方法呢?

2 个答案:

答案 0 :(得分:0)

SuspendLayout / ResumeLayout通常在向FlowLayoutPanel添加控件时使用,并且不希望在每次添加后进行布局。它是暂停,直到你说 resume (甚至可能强迫它)。

在您的情况下,您已准备好控件集合。更改WrapContents将导致布局(显然),但只会导致布局一次。使用SuspendLayout / ResumeLayout无法获得收益。

如果您在更改WrapContents后没有立即更新布局,那么您忘记了调用ResumeLayout的某个地方,它应该被称为暂停相同的次数。

答案 1 :(得分:0)

flowLayoutPanel.FlowDirection = flowLayoutPanel.FlowDirection;将强制重新渲染。

至于它的优雅......让没有砍掉的人投下第一块石头。