"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف تمنع الخفقان عند تحديث DataGridView بشكل متكرر؟

كيف تمنع الخفقان عند تحديث DataGridView بشكل متكرر؟

نشر في 2025-03-23
تصفح:821

How to Prevent Flickering When Frequently Updating a DataGridView?

بشكل متكرر قم بتحديث DataGridView دون وميض

سؤال:

تحديث DataGridView في الوقت الفعلي ، خاصة عندما يكون معدل التحديث مرتفعًا وعدد الخلايا كبيرة ، تكون العيوب البصرية مثل الخفقان والتأخر عرضة.

تحليل:

تقنية التخزين المؤقت المزدوجة تحل هذه المشكلات باستخدام المخازن المؤقتة خارج الشاشة.

حل:

تمكين وظيفة التخزين المؤقت المزدوجة من DataGridView من خلال انعكاس أو طرق التصنيف الفرعي.

طريقة الفئات الفرعية

إنشاء فئة فرعية من DataGridView ، فضح الخاصية المزدوجة:

public class DBDataGridView : DataGridView
{
    public new bool DoubleBuffered
    {
        get { return base.DoubleBuffered; }
        set { base.DoubleBuffered = value; }
    }

    public DBDataGridView()
    {
        DoubleBuffered = true;
    }
}

أضف هذه الفئة إلى المشروع وتعيين مزدوج إلى True.

طريقة الانعكاس

قم بتعيين DoubleBufferency برمجيًا باستخدام الانعكاس:

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 لتبديل doublebuffered من dataGridView.

عن طريق تمكين DoubleBuffering ، ستقوم DataGridView برسم تحديثات باستخدام المخازن المؤقتة خارج الشاشة ، مما يقلل من الخفقان والتلعثم أثناء التحديثات المتكررة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3