2009-05-29 20 views
0

私はスクロールすると「スミア」するオーナードローリストビューを持っています。それは、リストの表示されている内に移動するように、それは唯一のオーナー描画ListViewスクロール時に「スミア」

は、それは次のようになります...最後に表示された項目に影響を与えます。

何とか
何とか
何とか

...すべて1ピクセル離れてお互いの上に描画されています。 DrawItemイベントのコードは、フォーム

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

である私は完全に困惑します。 ありがとうございました。 Dave

+0

私は考えてくれてありがとうございました! –

答えて

1

リストビューをダブルバッファリングできるようにするには、それから派生し、DoubleBuffered = trueを設定します。 Double Bufferingをオンにすると、特にTileビューでちらつきが大幅に減少します。

+0

ダブルバッファリングの問題でした。 ListViewを継承したクラスを作成し、コンストラクタでダブルバッファリングを行う必要がありました。 –

0

また、フォームのプロパティでは、DoubleBufferを有効にすることができます。 さらに、いくつかのコマンドを使用できます。

DoubleBuffer C#をgoogleで検索すると詳しい情報が見つかります(申し訳ありませんが、私はリンクを投稿できません)。

0

これはListViewコントロールの既知のバグです。

1

詳しくは、DrawSubItem(...)ですべての図面を表示してください。問題は、drawItemが最初のアイテムに対して呼び出され、DrawSubitemが同じアイテムのために...若干異なる境界であることです。

+0

それは賢明な音です。私はそれを試みます! –

関連する問題