optimieren .NET Control Neulackierung mit wm_setRedraw
.NET -Entwickler müssen häufig vorübergehend das Neulackieren innerhalb einer Kontrolle und ihren Kindern während umfangreicher Aktualisierungen einstellen. Während SuspendLayout
und ResumeLayout
Layout verwalten, unterdrücken sie das Neuzug nicht vollständig.
Die WM_SetRedraw -Lösung
Die WM_SETREDRAW
-Nachricht, die an das Fenster des Steuerelements gesendet wird, bietet eine robuste Lösung. Ein boolescher Parameter steuert neu zeichnen: false
deaktiviert und true
ermöglicht es.
Implementierung von Suspenddrawing- und Resumedrawing -Methoden
Diese optimierte Klasse umfasst die Funktionalität:
<code class="language-csharp">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(); } }</code>
Verwendungsbeispiel
Um das Neulackieren zu verhindern:
<code class="language-csharp">ControlPainting.SuspendPainting(myControl); // ... perform modifications ... ControlPainting.ResumePainting(myControl);</code>
Weitere Lesen
Weitere Informationen finden Sie in den folgenden Informationen:
Das obige ist der detaillierte Inhalt vonWie kann ich das Malerei für eine .NET -Kontrolle und ihre Kinder effizient suspendieren und fortsetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!