Maison > développement back-end > C++ > Comment éviter le scintillement lors de la mise à jour fréquente d'un DataGridView ?

Comment éviter le scintillement lors de la mise à jour fréquente d'un DataGridView ?

DDD
Libérer: 2025-01-09 20:16:43
original
1070 Les gens l'ont consulté

How to Prevent Flickering When Frequently Updating a DataGridView?

Mettre à jour DataGridView fréquemment sans scintillement

Question :

Actualisez DataGridView en temps réel, en particulier lorsque le taux de mise à jour est élevé et que le nombre de cellules est important, des défauts visuels tels que le scintillement et le gel sont susceptibles de se produire.

Analyse :

La technologie de double tampon résout ces problèmes en utilisant un tampon hors écran.

Solution :

Activez la fonction de double mise en mémoire tampon de DataGridView via la réflexion ou le sous-classement.

Méthode de sous-classement

Créez une sous-classe de DataGridView et exposez la propriété DoubleBuffered :

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

    public DBDataGridView()
    {
        DoubleBuffered = true;
    }
}
Copier après la connexion

Ajoutez cette classe à votre projet et définissez DoubleBuffering sur true.

Méthode de réflexion

Configurez DoubleBuffering par programmation à l'aide de la réflexion :

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 });
}
Copier après la connexion

Appelez SetDoubleBuffer pour changer le DoubleBuffering de DataGridView.

En activant DoubleBuffering, DataGridView utilisera un tampon hors écran pour dessiner les mises à jour, réduisant ainsi le scintillement et le bégaiement lors des mises à jour fréquentes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal