Pergunta

Eu tenho um ListView ownerdrawn que "esfregaços" quando eu rolar. Ela afeta apenas o último item exibido como ele se move para o visível são da lista ...

Parece que:

Blah
blah
Blah

... foram todos desenhados em cima uns dos outros 1 pixel distante. O código no evento DrawItem é da 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);

Estou completamente perplexo. Todas as ideias apreciadas! Dave

Foi útil?

Solução

Você pode ativar o buffer duplo para ListView derivando-lo e definir DoubleBuffered = true. Há uma notável redução no flicker, especialmente em vista da telha, uma vez que você ligar buffer duplo diante.

Outras dicas

Em detalhe desenho vista fazer tudo do seu desenho em DrawSubItem (...). O problema é DrawItem está sendo chamado para o primeiro artigo e DrawSubitem é também para o mesmo item ... com um pouco diferentes limites.

Além disso, int próprias propriedades do formulário, você pode ativar DoubleBuffer. Além disso, há um par de comandos que você pode usar.

Mais informação pode ser encontrada através de pesquisa DoubleBuffer C # no google (desculpe, como um novo usuário não posso postar links).

Este é um bug conhecido no controle ListView.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top