ControlStyles.DoubleBuffer против ControlStyles.OptimizedDoubleBuffer
В чем разница между ControlStyles.DoubleBuffer и ControlStyles.OptimizedDoubleBuffer?
ControlStyles.DoubleBuffer не отображается в раскрывающемся списке Intellisense, тогда как ControlStyles.OptimizedDoubleBuffer фактически указан.
Документация MSDN не сразу делает разницу (по крайней мере, для меня).
Ответы
Ответ 1
Я нашел этот поток по теме:
DoubleBuffered = true устанавливает как ControlStyles.OptimizedDoubleBuffer AND ControlStyles.AllPaintingInWmPaint.
В какой-то момент было намерение отказаться от DoubleBuffer и вместо этого использовать OptimizedDoubleBuffer, однако поток идет по причинам, почему это может быть плохой идеей (что я не понимаю)
Похоже, что вся ситуация немного запуталась, однако в конечном счете эти два флага делают очень похожие вещи - поток указывает на то, что между OptimizedDoubleBuffer и DoubleBuffer все еще существуют тонкие различия, но не объясняет, что они собой представляют.
Ответ 2
Интересно. Подведите меня к поиску в Интернете.
от Microsoft
Документация для OptimizedDoubleBuffer указывает, что это поможет уменьшить мерцание и имеет тот же эффект, что и установка параметров UserPaint и AllPaintingInWmPaint ControlStyles в true. Однако, если для параметра OptimizedDoubleBuffer ControlStyle установлено значение true без установки параметра UserPaint и AllPaintingInWmPaint, видимого уменьшения мерцания нет.
Установка параметров UserPaint и AllPaintingInWmPaint ControlStyles приведет к такой же оптимизированной оптимизации мерцания, как и в Visual Studio 2003 при настройке DoubleBuffer, UserPaint и AllPaintingInWmPaint ControlStyles. Другими словами, между OptimizedDoubleBuffer и устаревшим DoubleBuffer нет никакой разницы.
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=94096