質問:
リアルタイムでDatagridViewを更新します。特に更新レートが高く、セルの数が大きい場合、フリッカリングや遅延などの視覚的欠陥は発生する傾向があります。
分析:
ダブルバッファリングテクノロジーは、画面外のバッファーを使用してこれらの問題を解決します。
解決:
反射方法またはサブクラス化方法を使用して、DatagridViewの二重バッファリング関数を有効にします。
datagridViewのサブクラスを作成し、ダブルバッファープロパティを公開します:
public class DBDataGridView : DataGridView
{
public new bool DoubleBuffered
{
get { return base.DoubleBuffered; }
set { base.DoubleBuffered = value; }
}
public DBDataGridView()
{
DoubleBuffered = true;
}
}
このクラスをプロジェクトに追加し、ダブルバッファリングをtrueに設定します。
リフレクションを使用してプログラムでダブルバファーを設定する:
using System.Reflection;
static void SetDoubleBuffer(Control ctl, bool DoubleBuffered)
{
typeof(Control).InvokeMember("DoubleBuffered",
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.SetProperty,
null, ctl, new object[] { DoubleBuffered });
}
SetDoubleBufferに電話して、DatagridViewのダブルバッファーを切り替えます。
ダブルバッファリングを有効にすることにより、DatagridViewは画面外のバッファーを使用して更新を描画し、頻繁な更新中にちらつきとst音を減らします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3