visual studio doble winforms visual-studio-2008 doublebuffered

winforms - doble - double buffered visual studio



Habilitar doble almacenamiento en bĂșfer (4)

He visto el siguiente código para habilitar el doble almacenamiento en memoria en un winform:

// Activates double buffering this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true); this.UpdateStyles();

¿Es esto diferente de simplemente configurar Form.DoubleBuffering = true?


Configurar DoubleBuffering de un formulario establecerá doble búfer para ese formulario. Es lo mismo que llamar

form.SetStyle(ControlStyles.OptimizedDoubleBuffer, value);

Las otras banderas como UserPaint y AllPaintingInWmPaint son estilos que no se configuran simplemente configurando control.DoubleBuffering = true


En .NET DoubleBuffered no DoubleBuffered propiedad DoubleBuffered en los controles, por lo que SetStyle era la única forma de habilitarlo. Codifique su vista que utiliza SetStyle probablemente todavía esté alrededor de 1. x días, o de desarrolladores que simplemente no han cambiado sus hábitos desde entonces.


Control.DoubleBuffering realiza

SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, value);

por lo que su código también establece ControlStyles.UserPaint (que probablemente no tenga ningún efecto en este punto).


De : ¿Cómo duplicar los controles .NET de buffer en un formulario? :

public static void SetDoubleBuffered(System.Windows.Forms.Control c) { //Taxes: Remote Desktop Connection and painting //http://blogs.msdn.com/oldnewthing/archive/2006/01/03/508694.aspx 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); }