Мерцание после изменения размера, несмотря на флаг WS_EX_COMPOSIET и свойство DoubleBuffered

У меня есть TableLayoutPanel, где я использую перетаскивание элементов управления внутри макета. К сожалению, после перетаскивания элементы управления мигают. Я пробовал DoubleBuffered = true для всех элементов управления и многих других вещей. Я также пробовал это решение: Как исправить мерцание в пользовательских элементах управления . И на самом деле это очень хорошо работает с упомянутым CreateParams. Но только до тех пор, пока я не изменю размер формы. Кажется, что окна забывают флаг WS_EX_COMPOSIET после изменения размера. Появляется только с обвесом. Без aero он сохраняет настройки CreateParams после изменения размера.

Есть ли способ предотвратить мерцание при включенной теме aero?


person Robotregent    schedule 23.05.2012    source источник
comment
Вы можете попробовать установить флаг WS_EX_LAYERED. См. Также: Проблема перерисовки в Windows10 с помощью DoubleBuffering   -  person Rekshino    schedule 02.10.2018


Ответы (1)


в событиях изменения размера формы (onResizeBegin и на ResizeEnd) используйте следующий код:

protected override void OnResizeBegin(EventArgs e) 
 {
    SuspendLayout();
    base.OnResizeBegin(e);
 }

protected override void OnResizeEnd(EventArgs e) 
 {
    ResumeLayout();
    base.OnResizeEnd(e);
 }
person Eslam Gamal    schedule 10.07.2013
comment
Это было первое, что я сделал. К сожалению, безуспешно. Я получил приемлемые результаты с меньшим количеством вложенных элементов управления. - person Robotregent; 11.07.2013