Как включить двойную буферизацию элемента управления с помощью C# (Windows forms)?

Как включить двойную буферизацию элемента управления с помощью C# (Windows forms)?

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

3 ответов


в конструкторе элемента управления задайте свойство DoubleBuffered и/или ControlStyle соответствующим образом.

например, у меня есть простой DoubleBufferedPanel, конструктор которого следующий:

this.DoubleBuffered = true;
this.SetStyle(ControlStyles.UserPaint | 
              ControlStyles.AllPaintingInWmPaint |
              ControlStyles.ResizeRedraw |
              ControlStyles.ContainerControl |
              ControlStyles.OptimizedDoubleBuffer |
              ControlStyles.SupportsTransparentBackColor
              , true);


используйте свойство DoubleBuffered, унаследованное от системы.Окна.Формы.Управление.

System.Windows.Forms.Form myForm = new System.Windows.forms.Form();
myForm.DoubleBuffered = true;