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