プロプログラマ -Flex,Air,C#,Oracle,PHP-

プログラマーを職業としてます。 Flex,Air,C#,Oracle,PHPの言語ノウハウを中心に情報発信していきます

[C#] DataGridViewのDoubleBufferedを有効にする

DataGridViewはとっても便利なコンポーネントですが、結構”重い”コンポーネントでもあります。

実際に実装してみると、表示のチラツキが気になる場合が多々あります。
この表示の重さについて、DoubleBufferedプロパティを有効にすることによって、多少表示が速くなるようです。

ですが、なぜかDataGridViewにはDoubleBufferdプロパティが公開されていません。
なので、このプロパティを変更しようとする場合には、DataGridViewを継承するか、C#の場合は特殊な指示をすることで直接プロパティを変更します。

DoubleBufferdプロパティはprotectedなので、継承した場合は、そのままプロパティにアクセスできます。

public class DataGridViewEx: DataGridView
{
    public DataGridViewEx()
    {
        this.DoubleBuffered = true;
    }
}

C#の場合は、protecedプロパティにも強引にアクセスする手段がありますので、それを使えば、継承しなくても指定可能です。
Form_Loadなどに記載します。

typeof(DataGridView).
    GetProperty("DoubleBuffered",
    BindingFlags.Instance | BindingFlags.NonPublic).
    SetValue(dataGridView1, true, null);

シンプルなGridだとさほど違いはわかりませんが列や行をたくさん定義した場合には、効果てきめんとなります。
もしかしたら場合によって逆に遅くなってしまう場合もあるかもしれませんので、
試してみて、今定義しているDataGridViewに必要な設定なのか確認してから使用しましょう。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です