C # Зачем использовать SuspendLayout ()?

Я читаю оSuspendLayout() а такжеResumeLayout(), Что я не могу понять, так это то, почему я должен это делать / использовать. Я знаю, что вы используете его, когда добавляете элементы управления во время выполнения к контейнеру элементов управления.

Это связано с настройкой свойств, таких какDock, Anchor, Location, так далее.

Но я не понимаю, какое дополнительное значение имеет Suspend- и ResumeLayout (). О чем заботятся эти методы?

Ответы на вопрос(1)

Решение Вопроса

это если вы хотите настроить несколько свойств макета - или добавить несколько дочерних элементов - но избегайте повторной реакции системы макетов на ваши изменения. Вы хотите этотолько выполнить макет в самом конце, когда все «готово».

 Jon Skeet01 окт. 2010 г., 12:35
@Martijn: Да, вы можете установить их ... и система макетов будет тратить время (и, возможно, сделать экран уродливым), изменяя макет, пока вы устанавливаете различные свойства - вместо того, чтобы делать этоодин раз когда ты закончишь все настраивать. Предположим, у вас есть сложный макет, который пытается равномерно распределить пространство, и вы добавляете 100 элементов ...действительно хотите, чтобы он проработал это пространство после того, как вы добавили первое, затем после того, как добавили второе, затем, после того, как добавили третье и т. д.?
 Martijn01 окт. 2010 г., 12:29
Я до сих пор не понимаю, чтоSuspendLayout() делает. Я имею ввиду зачем использоватьSuspendLayout() Вы также можете установить эти свойства без использованияSuspendLayout().
 Martijn01 окт. 2010 г., 12:55
@Mario: Итак, вы предлагаете, чтобы в виде сетки было вставлено несколько строк, вы должны использоватьSuspendLayout() чтобы убедиться, что строки видны? ЛиBindingList сделать это в фоновом режиме тоже?
 Mario The Spoon01 окт. 2010 г., 12:40
Как писал Джон Скит: Когда вы устанавливаете свойства multipl (или вставляете несколько строк в сетку), экран не обновляется для каждого отдельного изменения, он обновляется только после вызова ResumeLayout. Сохраняет производительность и нечетное мерцание экрана.
 Mario The Spoon01 окт. 2010 г., 13:48
@Martijn: Я бы использовал SuspendLayout (), но не для того, чтобы убедиться, что они видны, а для (а) сохранения некоторой производительности, поскольку экран не обновляется после каждого действия (б), чтобы избежать ненужных действий на экране, например мерцания или так. Как BindingList справляется с этим, я не знаю, извините (поскольку я избегаю автоматических привязок данных по другим причинам).

Ваш ответ на вопрос