Как прокомментировал Ханс, SuspendLayout
и ResumeLayout
хорошо работают в этой ситуации вместе с приостановкой рисования элемента управления для контейнера:
public static class Win32 {
public const int WM_SETREDRAW = 0x0b;
[DllImport("user32.dll")]
public static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
public static void SuspendPainting(IntPtr hWnd) {
SendMessage(hWnd, WM_SETREDRAW, (IntPtr)0, IntPtr.Zero);
}
public static void ResumePainting(IntPtr hWnd) {
SendMessage(hWnd, WM_SETREDRAW, (IntPtr)1, IntPtr.Zero);
}
}
Тогда от вас изменится размер событий:
private void Form1_ResizeBegin(object sender, EventArgs e) {
tableLayoutPanel1.SuspendLayout();
}
private void Form1_ResizeEnd(object sender, EventArgs e) {
Win32.SuspendPainting(tableLayoutPanel1.Handle);
tableLayoutPanel1.ResumeLayout();
Win32.ResumePainting(tableLayoutPanel1.Handle);
this.Refresh();
}