C#:ResumeLayout(true) 与 ResumeLayout(false) 的作用相同吗?执行布局()?
我查看了 Form
和 UserControl
生成的设计器代码,在 InitializeComponent()
方法中,它们始终
this.SuspendLayout();
以
this.ResumeLayout(false);
this.PerformLayout();
但是从我在这些方法的 msdn 文档中看到的内容来看,以 结尾不会
this.ResumeLayout(true); // Or just this.ResumeLayout()
做完全相同的事情吗?或者我在这里遗漏了什么?
之所以问这个问题,是因为我将用不同的方法添加一堆控件,并且我认为我应该执行挂起-恢复例程,以使其更加美观和高效。但是当你看似只使用一个方法时,无法弄清楚这两个方法调用的原因是什么......
I have looked at the generated designer code of Form
s and UserControl
s, and in the InitializeComponent()
method they always start with
this.SuspendLayout();
and end with
this.ResumeLayout(false);
this.PerformLayout();
But from what I can see in the msdn documentation of those methods, wouldn't ending with
this.ResumeLayout(true); // Or just this.ResumeLayout()
do the exact same thing? Or am I missing something here?
Asking because I will be adding a bunch of controls in a different method, and thought I should do the suspend-resume routine to be nice and efficient. But can't figure out what the reason for those two method calls are when you can seemingly just use one...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用反光板:
但是
原因:
当使用 false 调用 ResumeLayout 时,将循环访问一个控件集合,并且 LayoutEngine 对布局中的每个控件调用 InitLayout。
Using reflector:
But
Reason:
When ResumeLayout is called with false, there is a control collection that is looped through and the LayoutEngine calls InitLayout on each of the controls in the layout.
暂停布局
执行布局
MSDN 链接 - PerformLayout 方法
SuspendLayout
PerformLayout
MSDN Link - PerformLayout Method