Как отключить перерисовку формы в C#?

okis

Изменение значения свойства AutoValidate не помогло. У формы сменяется background, потом удаляются кнопки и добавляются кнопки. Кнопки при этом аццки мерцают.

okis

С даблбуффером стало лучше.

Alexander08

зависит от фреймворка.
попробуй че-нидь такое
ResizeRedraw = true;
//Раскомментируйте эту строку для .NET Framework 1.x
//SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint |ControlStyles.AllPaintingInWmPaint, true);
//Раскомментируйте эту строку для .NET Framework 2.0
//DoubleBuffered = true;

agaaaa

Это всё делается не в один приём?

okis

В один. На деле, правда, в обратном порядке: пересоздаются кнопки, сменяется фон. С даблбуффером лучше, но всё равно слегка тормозит.

agaaaa

А как происходит перерисовка, если ты ещё не вышел из обработчика события?

okis

Вот в этом и была часть моего вопроса, как это метод работает а что-то там на форме мерцает.

Dasar

А как происходит перерисовка, если ты ещё не вышел из обработчика события?
перерисовка в том числе делается и без обработчика событий
Invalidate - помечается форму, что ее надо перерисовать (в очередь ставиться wm_paint)
Update - прямо сейчас перерисовывает то, чтобы было помечено для перерисовки
Refresh - помечает все для перерисовки, и перерисовывает тут же

okis

Это я знаю, но такого у меня нет. Если, конечно, такое поведение не прошито в стандартный класс контрол, т.к. не проверял рефлектором.

sutulin

Вызываешь SuspendLayout ResumeLayout у формы?
Оставить комментарий
Имя или ник:
Комментарий: