Могу ли я заморозить рендеринг пользовательского интерфейса во время загрузки формы? - PullRequest
10 голосов
/ 14 октября 2011

Можно ли как-нибудь приостановить все команды обновления пользовательского интерфейса в Winforms?

Или у меня есть небольшое ощущение, что я пытаюсь пойти по этому пути совершенно неправильно, так что есть другой способ обойти мою проблемуЯ в основном загружаю сохраненное состояние элемента управления, который загружает новые элементы управления по всему нему.Тем не менее, я делаю это в потоке пользовательского интерфейса, а некоторые загружают данные из другого потока, который затем заполняет пользовательский интерфейс.

Таким образом, эффект, который я получаю при загрузке, заключается в том, что пользователь может видеть несколькоэлементов управления, появляющихся в одном месте, затем перемещающихся в другое место в форме, меняющих значения и т. д.

Я бы хотел вместо этого загрузить экран загрузки и загрузить элементы управления в фоновом режиме.Это довольно большое приложение, и это НЕ ТАК важно, поэтому переделка моего кода на самом деле не вариант.

Могу ли я просто остановить все команды Update () в элементе управления во время выполнения метода?

Ответы [ 2 ]

14 голосов
/ 14 октября 2011

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

В основном (при условииSomeMethod находится в классе формы):

private void SomeMethod()
{
    this.SuspendLayout();
    // all UI setup
    this.ResumeLayout();
}
4 голосов
/ 14 октября 2011

это действительно зависит от вашей логики формы, в общем случае вы не должны перегружать метод Load или Show слишком большим количеством вещей, чтобы форма могла быть отображена и нарисована быстро и всегда выглядела отзывчивой.

в некоторых случаях это может помочь в использовании методов SuspendLayout и ResumeLayout, см. Здесь: Метод Control.SuspendLayout

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...