drop doble and c# .net winforms listview gdi+

doble - doublebuffered c#



¿ListView personalizado en Winforms? (3)

¿Es posible dibujar algunas cadenas en una vista de lista?

Anulo el evento OnPaint pero no veo ningún cambio. Comprobé un código en la vista de lista personalizada, pero parece que la gente usa p / invoke, etc. ¿Por qué?

¿La lista no es tan personalizable como otras formas de ganar, como el control Button?

No voy a personalizar salvajemente, solo pintar un poco más después de que haya terminado la pintura estándar.



No puede anular el método OnPaint() . Ese método no hace nada en un ListView. De manera similar, OwnerDrawn permite dibujar de manera personalizada cada celda, pero no le permite pintar sobre el control como un todo.

Use un ObjectListView (un contenedor de código abierto alrededor de .NET WinForms ListView) y use su característica Overlay . Eso te permite hacer algo como esto sin esfuerzo:

texto sobre un ListView http://i37.tinypic.com/29zwu1d.jpg

Esto fue producido por este código:

this.olv1.OverlayText.Alignment = ContentAlignment.BottomRight; this.olv1.OverlayText.Text = "Trial version"; this.olv1.OverlayText.BackColor = Color.White; this.olv1.OverlayText.BorderWidth = 2.0f; this.olv1.OverlayText.BorderColor = Color.RoyalBlue; this.olv1.OverlayText.TextColor = Color.DarkBlue;


class MyCustomlistView : ListView { public MyCustomlistView() : base() { SetStyle(ControlStyles.UserPaint, true); } protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawString("This is a custom string", new Font(FontFamily.GenericSerif, 10, FontStyle.Bold), Brushes.Black, new PointF(0, 50)); } }