首页 文章

RichTextBox中RTF文件中的超链接断开

提问于
浏览
6

我正在使用 RichTextBox 来显示RTF文件,其中包含一个超链接 . 链接文本不是URL(目标是有效的URL) . RTF是使用Word创建的 . Word和写字板都能正确识别链接(写字板不会启动链接,但会显示相应的手形光标) .

当我将RTF加载到 RichTextBox 时,链接显示格式正确(蓝色和下划线),但不是表现得像链接,当光标在链接上移动时它仍然是工字梁, LinkClicked 事件不会触发,它实际上在链接后显示尖括号之间的目标(这似乎不正确) . 由于链接文本不是URL, DetectUrls 在此处没有帮助 .

有没有理由 RichTextBox 没有正确处理这些链接,或者是一种让它们按预期工作的方法?

这是代码 .

TipView.Rtf = tips[tipIndex];
// I've also tried TipView.LoadFile, with identical result

要重现此问题,请使用Word(我正在使用2000)创建一个RTF文档,其中包含一个文本不是URL但是以有效URL为目标的链接,并以编程方式将.rtf文件加载到 RichTextBox (我正在使用.NET) 2.0 in C#Express 2008) .

1 回答

  • 4

    要支持超链接,您需要RICHEDIT50W version of "rich edit" .

    为了那个原因:

    • 使用.NET Framework 4.7,它在 RichTextBox 中本机使用 RICHEDIT50W .

    • 在旧版.NET Framework中,您可以修改 RichTextBox 以使用 RICHEDIT50W

    public class ExRichText : RichTextBox
    {
        [DllImport("kernel32.dll", EntryPoint = "LoadLibraryW",
                   CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern IntPtr LoadLibraryW(string s_File);
    
        protected override CreateParams CreateParams
        {
            get
            {
                var cp = base.CreateParams;
                LoadLibraryW("MsftEdit.dll");
                cp.ClassName = "RichEdit50W";
                return cp;
            }
        }
    }
    

    基于RichTextBox Selection HighlightRichTextBox cannot display Unicode Mathematical alphanumeric symbols .

相关问题