C#为什么要使用SuspendLayout()?

Mar*_*ijn 46 c# winforms

我正在阅读SuspendLayout()ResumeLayout().我无法弄清楚的是,我为什么要这样做?我知道在运行时向控件容器添加控件时使用它.

它是与设置一样性质Dock,Anchor,Location,等.

但我不明白Suspend-和ResumeLayout()的附加值是什么.这些方法需要注意什么?

Jon*_*eet 63

基本上,如果您想调整多个与布局相关的属性 - 或者添加多个子项 - 但是避免布局系统反复对您的更改做出反应.你希望它只是在最后,当一切的"准备好"进行布局.

  • @Martijn:是的,你可以设置它们......布局系统将浪费时间(并且可能使屏幕看起来很丑)在你设置各种属性时改变布局 - 而不是做*一次*当你'完成了一切设置.假设你有一个复杂的布局,试图平均分配空间,并且你正在添加100个项目......你真的*想要在你添加第一个之后计算出那个空间,然后你就是添加第二个,然后你添加了第三个等? (9认同)
  • @Martijn:我会使用SuspendLayout(),但不是为了确保它们是可见的,而是为了(a)保存一些性能,因为屏幕在每次操作后都没有刷新(b)以避免屏幕上不必要的活动,如闪烁或者.BindingList如何处理这个,我不知道,抱歉(因为我出于其他原因避免自动数据绑定). (3认同)
  • 我仍然不明白`SuspendLayout()`的作用.我的意思是为什么使用`SuspendLayout()`您也可以在不使用`SuspendLayout()`的情况下设置这些属性. (2认同)