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

标签 c# winforms richtextbox

我有一个 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/

相关文章:

c# - 如何在标题栏中显示带有下标或上标的文本?

forms - 在 Powershell 中检查是什么关闭了 Windows 窗体

c# - 在 C# 中减慢动画速度

c# - WPF richtextbox 上的多语言拼写检查

c# - 在高 DPI 设置下调整 RichTextBox 字体大小

c# - 将 System.Drawing.Icon 转换为 Microsoft.UI.Xaml.ImageSource

c# - Outlook 中 "Item Sent"上的事件

c# - 在 EF Core 2 中使用单一表名

c# - 我可以使用 Amazon 的 SES 发送带有源电子邮件地址的显示名称吗?

c# - TextBox 和 RichTextBox 在线程方面的区别