0

スクロールすると「にじむ」所有者が描いたListViewがあります。リストの表示されている領域に移動するときに、最後に表示されたアイテムにのみ影響します。

次のようになります。

Blah
Blah
Blah

...すべてが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);

私は完全に困惑しています。どんなアイデアでもありがたいです!デイブ

4

4 に答える 4

1

ListViewから派生して設定することにより、ListViewのダブルバッファリングを有効にできますDoubleBuffered = true。ダブルバッファリングをオンにすると、特にタイルビューで、ちらつきが著しく減少します。

于 2009-05-29T02:54:22.713 に答える
1

詳細ビューの描画では、DrawSubItem(...)ですべての描画を実行します。問題は、drawItemが最初のアイテムに対して呼び出され、DrawSubitemも同じアイテムに対して...わずかに異なる境界で呼び出されることです。

于 2010-01-29T22:45:39.967 に答える
0

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

詳細については、GoogleでDoubleBuffer C#を検索してください(申し訳ありませんが、新しいユーザーとしてリンクを投稿することはできません)。

于 2009-05-29T22:16:04.083 に答える
0

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

于 2009-09-18T07:42:37.520 に答える