2009-05-29 6 views
0

Ich habe eine Ownerdrawn ListView, die "verschmiert", wenn ich scroll. Es wirkt sich nur auf die letzte angezeigte Element, wie es in der sichtbar sind von der Liste bewegt ...Owner Draw ListView "Verschmieren" beim Scrollen

Es sieht aus wie:

Blah Blah

Blah

... wurden alle 1 Pixel auseinander gezogen. Der Code in der DrawItem Veranstaltung ist von der Form

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

Ich bin völlig ratlos. Alle Ideen dankbar geschätzt! Dave

+0

Es ist keine doppelte Pufferung Problem (ich versuchte das) danke für die Ideen! –

Antwort

1

Sie können die doppelte Pufferung für ListView aktivieren, indem Sie davon ableiten und DoubleBuffered = true setzen. Vor allem in der Kachelansicht wird das Flimmern merklich reduziert, sobald Sie die Doppelpufferung aktivieren.

+0

Es stellte sich heraus, dass es sich um ein doppeltes Pufferproblem handelte. Ich musste eine Klasse erstellen, die von ListView erbte, und doppelte Pufferung im Konstruktor aktivieren –

0

In den eigenen Eigenschaften des Formulars können Sie DoubleBuffer aktivieren. Darüber hinaus gibt es ein paar Befehle, die Sie verwenden können.

Weitere Informationen finden Sie, indem Sie DoubleBuffer C# bei google suchen (sorry, als neuer Benutzer kann ich keine Links posten).

0

Dies ist ein bekannter Fehler im ListView-Steuerelement.

1

In Detailansicht Zeichnung alle Ihre Zeichnung in DrawSubItem (...). Das Problem ist drawItem wird für das erste Element aufgerufen und DrawSubitem ist auch für das gleiche Element ... mit leicht unterschiedlichen Schranken.

+0

Das hört sich vernünftig an, ich werde es versuchen! –

Verwandte Themen