To enable double buffering on a control without subclassing it, use the method below. Double buffering is disabled in terminal server sessions since it will lower performance instead of increasing it.
public static void setDoubleBuffering(Control control, bool state) { if (!System.Windows.Forms.SystemInformation.TerminalServerSession) { typeof(Control).InvokeMember("DoubleBuffered", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.SetProperty, null, control, new object[] { state }); } }