naw*_*fal 7 .net performance controls drawing winforms
我没有找到真正的根本区别是什么这两种方法之间一个很好的解释Control.SuspendLayout和BeginUpdate(常见于列表控件一样ListView,ComboBox,ListBox等),比它们都提高性能等.
据我所知:
他们都暂停绘图,直到所有要显示的项目都被加载,然后重新绘制.
通常SuspendLayout当控件被添加到状容器的控制被称为Panel,GroupBox而等,BeginUpdate用于添加非控制的项目,如对象以列出控制喜欢ListBox.
但是,当他们这样做时,为什么会有两个电话?或者他们有什么不同的做法?
同样有ResumeLayout和EndUpdate等同物.
Han*_*ant 11
他们没有任何共同之处.SuspendLayout关闭自动布局,这是由TableLayoutPanel和FlowLayoutPanel等控件使用的类型,以及从Dock,Anchor和AutoSize属性获得的布局更新.它对ListView,ComboBox或ListBox完全没有影响,这些控件不执行布局.通常只有在批量添加控件到容器时才使用它.有时,当自动布局使窗口的大小变得太令人讨厌时,您会使用它.它确实减少了重绘的次数,完全是因为它暂停了控件大小的更新.
BeginUpdate停止控件重绘自身.你这样做,当你大量新增项目,对他们不能使用他们的Items.AddRange()方法,因为某些原因使用它就像ListView控件或列表框控件.
正如您自己指出的, TheBeginUpdate是列表控件的一部分,在添加项目时使用。
这SuspendLayout是相似的,但它来自Control课堂。当您进行自定义绘图时,它非常有用。
实际上,区别在于绘图控件与控件中的绘图项。如果您设置与绘制相关的属性 - 使用SuspendLayout. 在添加项目的过程中,使用BeginUpdate
更新
机制有点不同。BeginUpdate在项目添加/删除期间抑制绘制事件。如果您尝试调试一个paint事件,您可能会发现它被多次触发。
SuspendLayout在移动、调整大小等过程中抑制布局计算。
| 归档时间: |
|
| 查看次数: |
7050 次 |
| 最近记录: |