Вы также можете попробовать этот стиль:
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
Если этого недостаточно, вы можете вручную остановить и возобновить форму или управлять чертежом с помощью следующих методов:
[DllImport("user32.dll", EntryPoint = "SendMessageA", ExactSpelling = true, CharSet =
CharSet.Ansi, SetLastError = true)]
private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
private const int WM_SETREDRAW = 0xB;
public static void SuspendDrawing(Control target)
{
if (target != null && !target.IsDisposed)
SendMessage(target.Handle, WM_SETREDRAW, 0, 0);
}
public static void ResumeDrawing(Control target, bool redraw)
{
if (target != null && !target.IsDisposed)
{
SendMessage(target.Handle, WM_SETREDRAW, 1, 0);
if (redraw)
target.Refresh();
}
}