我有一个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); }