首頁 >後端開發 >C++ >我如何有效地暫停並恢復.NET控制及其孩子的繪畫?

我如何有效地暫停並恢復.NET控制及其孩子的繪畫?

Linda Hamilton
Linda Hamilton原創
2025-01-30 10:56:09171瀏覽

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

優化.NET控制重新粉刷使用WM_SETRAW

> 在廣泛的更新中,

.NET開發人員通常需要暫時停止在控件及其子女內重新粉刷。 而SuspendLayoutResumeLayout管理佈局,它們不會完全抑制重新繪製。

>

wm_setredraw解決方案

>發送到控件的窗口句柄的消息提供了強大的解決方案。 布爾參數控制重新繪製:WM_SETREDRAWdisables,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>

進一步閱讀

有關更多深入信息,請諮詢以下資源:

  • c#jitter
  • >
  • 懸掛佈局

以上是我如何有效地暫停並恢復.NET控制及其孩子的繪畫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn