優化.NET控制重新粉刷使用WM_SETRAW
> 在廣泛的更新中, .NET開發人員通常需要暫時停止在控件及其子女內重新粉刷。 而SuspendLayout
和ResumeLayout
管理佈局,它們不會完全抑制重新繪製。
wm_setredraw解決方案
>發送到控件的窗口句柄的消息提供了強大的解決方案。 布爾參數控制重新繪製:WM_SETREDRAW
disables,false
啟用它。 true
>實施懸掛圖和恢復方法
這個簡化的類封裝了功能:
<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>
>用法示例
防止重新粉刷:
<code class="language-csharp">ControlPainting.SuspendPainting(myControl); // ... perform modifications ... ControlPainting.ResumePainting(myControl);</code>
進一步閱讀
有關更多深入信息,請諮詢以下資源:
以上是我如何有效地暫停並恢復.NET控制及其孩子的繪畫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!