我需要向父控件添加许多控件。
但我发现,如果在将这些控件添加到父控件之前和之后添加ParentControl.SuspendLayout
和ParentControl.ResumeLayout
,则使用秒表测量刻度:
如果删除代码ParentControl.SuspendLayout
和ParentControl.ResumeLayout
,速度会更快。为什么会这样?
所以SuspendLayout
和ResumeLayout
不应该减少添加子控件的时间,对吧?那么使用SuspendLayout
和ResumeLayout
有什么好处呢?换句话说,如果我不使用SuspendLayout
和ResumeLayout
但直接将子控件添加到父控件,有什么坏处呢?
最佳答案
这是因为通常的原因,删除代码通常会使程序运行得更快。
suspend/resumelayout()被普遍误解。只有当控件具有非默认的“自动调整大小”、“停靠”或“定位”属性时,它才会有影响。当控件具有相互影响的布局属性时,它可以防止布局意外。
如果您有一个包含数百个控件的窗体,那么您根本不太可能使用这些属性。如此巨大的窗口不容易自动布局。因此,您调用的方法实际上什么都不做,它们需要时间来迭代布局,但没有任何好处。