Flikering nelle Windows Forms

Usando winforms o UserControls che includono contenitori tipo table-layout, in fase di ridimensionamento della maschera si possono verificare fastidiosi effetti di flickering.

Questi possono essere agevolmente ridotti utilizzando la seguente procedura:
– impostare la proprietà DoubleBuffered su true in visualizzazione struttura maschera
– inserire il seguente codice all’interno del code behind della maschera stessa

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);
  }

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