2011年05月22日

ListViewを更新したときのちらつきを抑制する(C#メモ)

リストビュー(System.Windows.Forms.ListView)を更新したときに起きる描画のちらつきを抑える方法です。
アイテムが少なかったり更新頻度が低ければ目立ちませんが、詳細ビューでアイテムが多かったり、頻繁に更新するような場合は、ちらつきが目立ちます。

ちらつきを抑えるにはダブルバッファを使用します。(ダブルバッファについての説明は省略します。ググってください。いわゆる裏画面のことです)
FormにはDoubleBufferedというプロパティがあるので、これをTrueにするだけで良かったのですが、ListViewには同様のプロパティがありません。そこでListViewを継承してDoubleBufferedがTrueを返すクラスを作ります。

// ダブルバッファ仕様のListView
class BufferedListView : System.Windows.Forms.ListView
{
    protected override bool DoubleBuffered { get { return true; } set { } }
}

フォームでは作成したBufferedListViewを使います。

public partial class Form1 : Form
{
    private BufferedListView listView1;

    public Form1()
    {
        InitializeComponent();

        // フォームのDoubleBufferedもtrueにする
        this.DoubleBuffered = true;

        // BufferedListViewの生成と配置
        this.listView1 = new BufferedListView();
        this.Controls.Add(this.listView1);
    }
}

BufferedListViewはDoubleBufferedがtrueであること以外はListViewと全く同じなので、同じように使えます。

良かったらクリックしてください
にほんブログ村 IT技術ブログ プログラム・プログラマーへ  人気ブログランキングへ

posted by among at 15:42 | Comment(0) | TrackBack(0) | C#
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/45398035

この記事へのトラックバック