title: Difference Between Control.DoubleBuffered and Control.SetStyle
body: <p>How do <code>Control.DoubleBuffered</code> and <code>Control.SetStyle</code> with <code>ControlStyles.DoubleBuffer</code> differ under the hood and in practice?</p>
  <p>Furthermore what is the difference between <code>ControlStyles.DoubleBuffer</code> and <code>ControlStyles.OptimizedBuffer</code>? The differences defined at the <a href="http://msdn.microsoft.com/en-us/library/system.windows.forms.controlstyles.aspx" rel="nofollow noreferrer">documentation page</a> are not really clear.</p>
  <p>Finally, why is it specified by the documentation that both <code>ControlStles.OptimizedDoubleBuffer</code> and <code>ControlStyles.DoubleBuffer</code> need to be accompanied by <code>ControlStyles.UserPaint</code> and <code>ControlStyles.AllPaintingInWmPaint</code>?</p>
  <p>These questions are in regards to Windows Forms Applications (GDI+). I do not know if such methods exist in <code>WPF</code> for example but if so.</p>