我有一个 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, IntPtr.Zero);
}
public void EndUpdate()
{
SendMessage(this.Handle, WM_SETREDRAW, (IntPtr)1, IntPtr.Zero);
SendMessage(this.Handle, EM_SETEVENTMASK, IntPtr.Zero, OldEventMask);
}
关于c# - 如何防止 RichTextBox 刷新其显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/192413/