gpt4 book ai didi

.net - SuspendLayout 和 BeginUpdate 的区别

转载 作者:行者123 更新时间:2023-12-04 10:18:25 29 4
gpt4 key购买 nike

我没有找到关于这两种方法之间实际潜在区别的很好解释 Control.SuspendLayoutBeginUpdate (通常出现在列表控件上,如 ListViewComboBoxListBox 等),除此之外它们都提高了性能。

据我了解:

  • 它们都暂停绘制,直到加载了所有要显示的项目,然后重新绘制。
  • 通常 SuspendLayout当控件添加到容器控件时调用,如 Panel , GroupBox等等,而 BeginUpdate用于将对象等非控件项添加到列表控件中,如 ListBox .

  • 但是为什么当它们做同样的事情时会有两个调用呢?或者他们有什么不同?

    同样有 ResumeLayoutEndUpdate等价物。

    最佳答案

    他们没有任何共同点。 SuspendLayout 关闭自动布局,TableLayoutPanel 和 FlowLayoutPanel 等控件使用的那种布局以及从 Dock、Anchor 和 AutoSize 属性获得的布局更新。它对 ListView、ComboBox 或 ListBox 根本没有影响,这些控件不执行布局。通常仅在将控件批量添加到容器时才使用它。有时,当自动布局使调整窗口大小太讨厌时,您会使用它。它确实减少了重绘次数,仅因为它暂停了控件大小更新。

    BeginUpdate 阻止控件重新绘制自身。当您向 ListView 或 ListBox 等控件批量添加项目并且由于某种原因无法使用它们的 Items.AddRange() 方法时,您确实会在它们上使用它。

    关于.net - SuspendLayout 和 BeginUpdate 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21619156/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com