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

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

Linda Hamilton
發布: 2025-01-30 10:56:09
原創
178 人瀏覽過

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

>實施懸掛圖和恢復方法

這個簡化的類封裝了功能:

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);

// ... perform modifications ...

ControlPainting.ResumePainting(myControl);

登入後複製

進一步閱讀

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

  • c#jitter
  • >
  • 懸掛佈局

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板