using System; using System.Runtime.InteropServices; using System.Windows.Forms; namespace Common { class SuspendDrawing { [DllImport("user32.dll")] private static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam); private const int WM_SETREDRAW = 11; public static void Suspend(Control parent) { if (parent.Visible) SendMessage(parent.Handle, WM_SETREDRAW, false, 0); } public static void Resume(Control parent) { if (parent.Visible) SendMessage(parent.Handle, WM_SETREDRAW, true, 0); parent.Refresh(); } public static void ExecuteAction(Control parent, Action action) { Suspend(parent); try { action(); } finally { Resume(parent); } } } }