Propietario Draw ListView “manchas” cuando se desplaza
-
06-09-2019 - |
Pregunta
Tengo un ListView ownerdrawn que "frotis" cuando se desplazan. Sólo afecta el último elemento que se muestra a medida que avanza en el visibles de la lista ...
Parece que:
Bla
bla
Bla
... todos se han dibujado en la parte superior de uno al otro, aparte de 1 píxel. El código en el evento DrawItem es de la forma
Rectangle rect = new Rectangle(e.Bounds.X + mIconSize.Width,
e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
e.Graphics.DrawString(episode.ToString(), this.Font, mBlackBrush, rect);
Estoy completamente perplejo. Cualquier idea agradecimiento apreciados! David
Solución
Puede activar el doble buffer para ListView derivando de ella y el establecimiento de DoubleBuffered = true
. Hay una notable reducción de parpadeo, especialmente en vista del azulejo, una vez que cumpla Doblebuffering sucesivamente.
Otros consejos
En la vista de detalle de dibujo hacer todo de su dibujo en DrawSubItem (...). El problema se DrawItem está recibiendo llamadas para el primer artículo y DrawSubitem también por el mismo artículo ... con un poco diferentes límites.
También, int propiedades propias del formulario, puede activar DoubleBuffer. Además, hay un par de comandos que puede utilizar.
Más información se puede encontrar buscando en DoubleBuffer C # en Google (lo siento, como un nuevo usuario que no puedo publicar enlaces).
Este es un error conocido en el control ListView.