2010-10-01 123 views
33

我正在閱讀約SuspendLayout()ResumeLayout()。我無法弄清楚的是,爲什麼我應該這樣做/使用它。我知道你在運行時將控件添加到控件容器時使用它。C#爲什麼使用SuspendLayout()?

它是與設置屬性,如DockAnchorLocation

但我不明白的附加值中止反應和ResumeLayout()的內容。這些方法需要注意什麼?

回答

50

基本上,它是如果你想調整多個佈局相關的屬性 - 或添加多個孩子 - 但避免佈局系統反覆對你的變化作出反應。你想要它只有執行佈局在最後,當一切都「準備好」。

+2

我還是不明白'SuspendLayout()'是做什麼的。我的意思是爲什麼使用'SuspendLayout()'你也可以在不使用'SuspendLayout()'的情況下設置這些屬性。 – Martijn 2010-10-01 10:29:27

+7

@Martijn:是的,你可以設置它們......並且佈局系統會浪費時間(並且可能使屏幕看起來很醜)在設置各種屬性時更改佈局 - 而不是一次*當你已經完成了一切設置。假設你有一個複雜的佈局,試圖平均分配空間,並且你正在添加100個項目......你真的*想要在你添加第一個項目之後找到這個空間,然後在你完成之後添加第二個,然後在添加第三個等之後? – 2010-10-01 10:35:22

+0

正如Jon Skeet寫道:當你設置multipl屬性(或在gridview中插入多行),屏幕不會刷新每一次更改,它只會刷新一次ResumeLayout被調用。節省性能和奇怪的屏幕閃爍。 – 2010-10-01 10:40:37