RichTextBox选择突出显示

Paw*_*ęba 3 .net c# richtextbox selection winforms

是否有可能在用户选择后,每个选定的字母都会显示原始颜色?并不总是白色,因为它是默认的?

我希望实现这样的目标 在此输入图像描述 你可以在wordpad中看到.

代替 在此输入图像描述你看到了什么RichTextBox.

Rez*_*aei 8

您可以使用最新版本,RichTextBox为此RICHEDIT50W,您应该继承标准RichTextBox并覆盖CreateParams并设置ClassNameRICHEDIT50W:

using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Windows.Forms;
public class ExRichText : RichTextBox
{
    [DllImport("kernel32.dll", EntryPoint = "LoadLibraryW", 
        CharSet = CharSet.Unicode, SetLastError = true)]
    private static extern IntPtr LoadLibraryW(string s_File);
    public static IntPtr LoadLibrary(string s_File)
    {
        var module = LoadLibraryW(s_File);
        if (module != IntPtr.Zero)
            return module;
        var error = Marshal.GetLastWin32Error();
        throw new Win32Exception(error);
    }
    protected override CreateParams CreateParams
    {
        get
        {
            var cp = base.CreateParams;
            try
            {
                LoadLibrary("MsftEdit.dll"); // Available since XP SP1
                cp.ClassName = "RichEdit50W";
            }
            catch { /* Windows XP without any Service Pack.*/ }
            return cp;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

截图

在此输入图像描述

注意:

  • 由于这个古老有用的视觉工作室工具,我可以使用Spy ++看到wordpad的RichTextBox类.

  • 如果你有过任何问题,RICHEDIT50W在您的操作系统,你可以打开Spy++WordPad,然后选择RichTextBox它,看看有什么类的名称.

在此输入图像描述

  • 当我搜索关于将RICHEDIT50W课程应用到我的控制中时,我到达了@Elmue 这个伟大的帖子,感谢他.