Maison > développement back-end > C++ > Comment puis-je suspendre et reprendre efficacement la peinture pour un contrôle .NET et ses enfants?

Comment puis-je suspendre et reprendre efficacement la peinture pour un contrôle .NET et ses enfants?

Linda Hamilton
Libérer: 2025-01-30 10:56:09
original
191 Les gens l'ont consulté

How Can I Efficiently Suspend and Resume Painting for a .NET Control and Its Children?

Optimisation du contrôle .NET Control Repainting avec WM_SetdreDraw

.NET Les développeurs doivent souvent interrompre temporairement la repeinture dans un contrôle et ses enfants lors de nombreuses mises à jour. Alors que SuspendLayout et ResumeLayout gèrent la disposition, ils ne suppriment pas complètement le redémarrage.

La solution WM_SetdreDraw

Le message WM_SETREDRAW, envoyé à la poignée de la fenêtre du contrôle, fournit une solution robuste. Un paramètre booléen des contrôles redessiant: false désactive, et true le permet.

Implémentation de méthodes de suspension et de reprise des méthodes

Cette classe rationalisée résume la fonctionnalité:

public static class ControlPainting
{
    [DllImport("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int wMsg, bool wParam, int lParam);

    private const int WM_SETREDRAW = 11;

    public static void SuspendPainting(Control parent)
    {
        SendMessage(parent.Handle, WM_SETREDRAW, false, 0);
    }

    public static void ResumePainting(Control parent)
    {
        SendMessage(parent.Handle, WM_SETREDRAW, true, 0);
        parent.Refresh();
    }
}
Copier après la connexion

Exemple d'utilisation

pour éviter la repection:

ControlPainting.SuspendPainting(myControl);
// ... perform modifications ...
ControlPainting.ResumePainting(myControl);
Copier après la connexion

lecture complémentaire

Pour plus d'informations approfondies, consultez ces ressources:

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal