Estoy utilizando un TableLayoutPanel para fines de marcado de asistencia. He agregado controles (un Panel y una Etiqueta) dentro de TableLayoutPanel y he creado eventos para ellos. En algunas condiciones eliminé todos los controles y procedí a unir los mismos controles en diferentes posiciones de TableLayoutPanel. Mientras vuelve a enlazar los controles, el TableLayoutPanel parpadea y es demasiado lento en la inicialización.Cómo evitar el parpadeo en TableLayoutPanel en C# .net
Respuesta
Suspenda el diseño hasta que haya agregado todos sus controles.
TableLayoutPanel panel = new TabelLayoutPanel();
panel.SuspendLayout();
// add controls
panel.ResumeLayout();
Consulte también el uso del doble almacenamiento en búfer. Deberá crear una subclase de TableLayoutPanel. Vea un ejemplo here.
Como una mejora de lo anterior, he tenido mejores resultados con:
TableLayoutPanel panel = new TabelLayoutPanel();
panel.SuspendLayout();
panel.StopPaint();
// add controls
panel.ResumePaint();
panel.ResumeLayout();
'StopPaint' y' ResumePaint' no son métodos nativos del control TableLayoutPanel. Obviamente está usando una extensión, que no incluyó en su respuesta. – LarsTech
utilizar este panel para establecer la propiedad dBuffer cierto
public partial class MyTableLayoutPanel : TableLayoutPanel
{
public MyTableLayoutPanel()
{
InitializeComponent();
}
public MyTableLayoutPanel(IContainer container)
{
container.Add(this);
InitializeComponent();
}
/// <summary>
/// Double buffer
/// </summary>
[Description("Double buffer")]
[DefaultValue(true)]
public bool dBuffer
{
get { return this.DoubleBuffered; }
set { this.DoubleBuffered = value; }
}
}
¿Podría describir por qué el dBuffer se debe establecer en verdadero? –
Este código presentado en otra pregunta en el clavo, se utiliza una llamada API para establecer el redraw TableLayoutPanel.
Esto funcionó muy bien para mí Remove flickering due to TableLayoutPanel & Panel in windows form
Aquí lo que hay en ese enlace (copia literal)
eliminar completamente el parpadeo debido a TableLayoutPanel & Panel de ventanas forman ir de la siguiente manera: = - 1. Establezca la propiedad de búfer doble de Form = true. 2. Pega Siguiendo 2 funciones en 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
- Call
SetDoubleBuffered(“TableLaoutPannel_controlName”)
para cadaTableLayoutPannel
,Pannel
,Splitcontainer
,Datagridview
& todo recipiente controles.Gracias a RhishikeshLathe Publicado el 16-Feb-14 20:11 pm
Agregó un bloque de comillas allí. Sin embargo, tenga en cuenta que añadir solo un enlace a la otra publicación y copiar todos los contenidos no es una atribución propia, per se. Si no tiene nada que agregar aparte de los detalles en el enlace, siempre es mejor dejarlos como comentarios. Cuídate la próxima vez. –
- 1. evitar el parpadeo en webkit-transición de webkit-transform
- 2. .Net TableLayoutPanel - Borrar controles es muy lento
- 3. Cómo evitar el parpadeo al manejar WM_ERASEBKGND en el cuadro de diálogo de Windows
- 4. visual C# formulario actualización resultados en parpadeo
- 5. ¿Cómo se puede evitar el parpadeo de ApplicationBar en el tema blanco WP7?
- 6. ¿Cómo puedo evitar una InvalidCastException en .NET?
- 7. C# parpadeo Listview en la actualización
- 8. Cómo establecer un columnspan en tableLayoutPanel
- 9. ¿Cómo puedo evitar el parpadeo en una aplicación de pantalla completa de WPF?
- 10. WPF: ¿Cómo puedo evitar el parpadeo de las casillas marcadas en un ListBox o un ListView?
- 11. ¿Evita el parpadeo en Windows Forms?
- 12. Parpadeo LED con Visual C++
- 13. Prevenir el parpadeo del cursor en el cuadro de texto
- 14. Evitar recursos duplicados de iconos en un proyecto .NET (C#)
- 15. Alineación vertical de controles en TableLayoutPanel
- 16. TableLayoutPanel de dimensionamiento
- 17. Cómo corregir el parpadeo en Controles de usuario
- 18. ¿Cómo reparar el parpadeo en un formulario de WinForms?
- 19. ¿Cómo puedo reducir el parpadeo de PageControl en Delphi?
- 20. Cómo eliminar el parpadeo de animación java
- 21. Cómo evitar excepciones atrapa copiar y pegar en .NET
- 22. ¿Cómo añadir filas en medio de una TableLayoutPanel
- 23. ¿Cómo alineo un TextBox y una etiqueta en TableLayoutPanel?
- 24. ¿parpadeo de árbol?
- 25. Forzar el parpadeo de la ventana cuando ocurre un evento en particular en C#/WPF
- 26. cómo evitar el "error ya definidas" en C++
- 27. Adición de columnas y filas en una fila TableLayoutPanel dinámicamente
- 28. ¿Cómo puedo evitar códigos Alt en una aplicación .NET?
- 29. cómo evitar [Content_Types] .xml en la clase de .NET ZipPackage
- 30. Cómo evitar limitaciones en restricciones de tipo genérico en C#?
Esto era muy útil, estoy recibiendo mucho menos fluctuación ahora. Gracias. – Jmnstr