"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment empêcher le scintillement lors de la mise à jour fréquente d'un datagridView?

Comment empêcher le scintillement lors de la mise à jour fréquente d'un datagridView?

Publié le 2025-03-23
Parcourir:823

How to Prevent Flickering When Frequently Updating a DataGridView?

Mettez fréquemment à jour le dataGridView sans clignoter

question:

Rafraîchir 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 décalage sont sujets à se produire.

analyser:

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

Solution:

Activez la fonction de double tampon de DataGridView via des méthodes de réflexion ou de sous-classe.

Méthode de sous-classe

Créez une sous-classe de DataGridView, exposent la propriété DoubleBuffered:

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

    public DBDataGridView()
    {
        DoubleBuffered = true;
    }
}

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

méthode de réflexion

Définir DoubleBuffering programmatiquement en utilisant 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 });
}

Appel SetDoubleBuffer pour changer le doublebuffering de DataGridView.

En activant DoubleBuffering, DataGridView dessinera des mises à jour à l'aide de tampons hors écran, réduisant le scintillement et le bégaiement lors de mises à jour fréquentes.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3