C#:ResumeLayout(true) 与 ResumeLayout(false) 的作用相同吗?执行布局()?

发布于 2024-08-03 12:47:57 字数 528 浏览 4 评论 0原文

我查看了 FormUserControl 生成的设计器代码,在 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 Forms and UserControls, 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

能否归途做我良人 2024-08-10 12:47:57

使用反光板:

this.ResumeLayout() is equal to this.ResumeLayout(true)

但是

this.ResumeLayout(true) is not equal to this.ResumeLayout(false) + this.PerformLayout()

原因:
当使用 false 调用 ResumeLayout 时,将循环访问一个控件集合,并且 LayoutEngine 对布局中的每个控件调用 InitLayout。

Using reflector:

this.ResumeLayout() is equal to this.ResumeLayout(true)

But

this.ResumeLayout(true) is not equal to this.ResumeLayout(false) + this.PerformLayout()

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.

面如桃花 2024-08-10 12:47:57

暂停布局

向一个控件添加多个控件时
家长控制,建议
您调用 SuspendLayout 方法
在初始化控件之前
额外。添加控件后
父控件,调用
恢复布局方法。这将
提高性能
具有许多控件的应用程序。

执行布局

它强制控件应用布局
其所有子控件的逻辑。如果
SuspendLayout 方法是
在调用之前调用
PerformLayout 方法,Layout 事件被抑制。可以使用 SuspendLayout 来抑制 layout 事件
ResumeLayout 方法。

MSDN 链接 - PerformLayout 方法

SuspendLayout

When adding several controls to a
parent control, it is recommended that
you call the SuspendLayout method
before initializing the controls to be
added. After adding the controls to
the parent control, call the
ResumeLayout method. This will
increase the performance of
applications with many controls.

PerformLayout

It forces the control to apply layout
logic to all its child controls. If
the SuspendLayout method was
called before calling the
PerformLayout method, the Layout event is suppressed. The layout event can be suppressed using the SuspendLayout and
ResumeLayout methods.

MSDN Link - PerformLayout Method

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文