Обновить все элементы управления в форме

2

Мне нужно обновить элементы управления в форме, потому что я использую this.Refresh(), но форма мерцает. Как я могу плавно обновлять элементы управления?

Использование Application.DoEvents() делает это плавно, но полезно ли это обновить, используя Application.DoEvents()?

Теги:

3 ответа

5
Лучший ответ

Здесь ссылка на MSDN о снижении мерцания в приложениях WinForms:

http://msdn.microsoft.com/en-us/library/3t7htc9c(VS.80).aspx

Самый простой способ - установить для свойства DoubleBuffered для формы значение true.

2

Form.ActiveForm.Update();

0

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

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

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

Как правило, лучше избегать перекачки контура сообщения (т.е. вызывать Application.DoEvents()), потому что он может просто вызвать чрезмерную окраску и более мерцание не менее. Помните, что он принудительно обрабатывает ВСЕ события, а не только рисует.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню