Рендеринг winforms управления более плавно - PullRequest
2 голосов
/ 13 февраля 2010

Мое приложение winforms работает очень изменчиво. Есть ли метод, который можно использовать, чтобы нарисовать форму вне экрана или скрыть ее до тех пор, пока макет не будет обработан? Что-нибудь, чтобы помочь ускорить визуальную нагрузку моих форм.

Спасибо за любую помощь.

редактирование:

Формы имеют пару сеток каждая и около 20-30 дополнительных элементов управления (текстовые поля / флажки). Все элементы управления принадлежат третьим сторонам, и я не делаю никаких пользовательских раскрасок самостоятельно.

Ответы [ 2 ]

9 голосов
/ 13 февраля 2010

Вы приближаетесь к тому, что в вашей форме слишком много элементов управления. Вы увидите, что каждый элемент управления по очереди рисует сам. Двойная буферизация не может исправить это, вся форма со всеми окнами управления должна быть двойной буферизацией. Это возможно начиная с XP, он поддерживает флаг стиля окна WS_EX_COMPOSITED. Это не ускорит рисование, но экран не будет обновлен, пока не будет завершен весь рендеринг.

Вставьте этот код в форму, чтобы включить его:

protected override CreateParams CreateParams {
  get {
    CreateParams cp = base.CreateParams;
    cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED
    return cp;
  }
} 
1 голос
/ 13 февраля 2010

Можно позвонить SuspendLayout и, позже, сделать ResumeLayout.

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