加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何防止RichTextBox刷新其显示?

发布时间:2020-12-15 18:13:30 所属栏目:百科 来源:网络整理
导读:我有一个RichTextBox,我需要经常更新Text属性,但是当我这样做时,RichTextBox会因为在整个方法调用中刷新所有内容而“眨眼”. 我希望找到一种简单的方法来暂时禁止屏幕刷新,直到我的方法完成,但我在网上找到的唯一一件事是覆盖WndProc方法.我采用了这种方法,
我有一个RichTextBox,我需要经常更新Text属性,但是当我这样做时,RichTextBox会因为在整个方法调用中刷新所有内容而“眨眼”.

我希望找到一种简单的方法来暂时禁止屏幕刷新,直到我的方法完成,但我在网上找到的唯一一件事是覆盖WndProc方法.我采用了这种方法,但有一些困难和副作用,它也使调试更加困难.看起来似乎必须有更好的方法来做到这一点.有人能指出我更好的解决方案吗?

解决方法

这是完整而有效的例子:
private const int WM_USER = 0x0400;
    private const int EM_SETEVENTMASK = (WM_USER + 69);
    private const int WM_SETREDRAW = 0x0b;
    private IntPtr OldEventMask;       

    [DllImport("user32.dll",CharSet=CharSet.Auto)]
    private static extern IntPtr SendMessage(IntPtr hWnd,int msg,IntPtr wParam,IntPtr lParam);

    public void BeginUpdate()
    {
        SendMessage(this.Handle,WM_SETREDRAW,IntPtr.Zero,IntPtr.Zero);
        OldEventMask = (IntPtr)SendMessage(this.Handle,EM_SETEVENTMASK,IntPtr.Zero);
    }       

    public void EndUpdate()
    {
        SendMessage(this.Handle,(IntPtr)1,IntPtr.Zero);
        SendMessage(this.Handle,OldEventMask);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读