How to avoid flickering in TableLayoutPanel in c#.net

This worked great for me Remove flickering due to TableLayoutPanel & Panel in windows form

Here what's in that link (copied verbatim)

Completely Remove flickering due to TableLayoutPanel & Panel in windows form go as follows:=- 1. Set double buffered property of Form =true. 2. Paste Following 2 functions in form.cs

#region .. Double Buffered function ..
   public static void SetDoubleBuffered(System.Windows.Forms.Control c)
    {
        if (System.Windows.Forms.SystemInformation.TerminalServerSession)
            return;
        System.Reflection.PropertyInfo aProp = typeof(System.Windows.Forms.Control).GetProperty("DoubleBuffered",
        System.Reflection.BindingFlags.NonPublic |
        System.Reflection.BindingFlags.Instance);
        aProp.SetValue(c, true, null);
    }

   #endregion


   #region .. code for Flucuring ..

   protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000;
            return cp;
        }
    }

    #endregion
  1. Call SetDoubleBuffered(“TableLaoutPannel_controlName”) for each TableLayoutPannel,Pannel, Splitcontainer, Datagridview & all container controls.

Thanks to RhishikeshLathe Posted 16-Feb-14 20:11pm


Suspend the layout until you've added all your controls on.

TableLayoutPanel panel = new TabelLayoutPanel();
panel.SuspendLayout();

// add controls

panel.ResumeLayout();

Also look at using Double Buffering. You'll have to create a sub-class of the TableLayoutPanel. See an example here.