RichTextBox中RTF文件中的超链接断开
我正在使用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)。
要支持超链接,您需要RICHEDIT50W
版本的“富编辑” 。
为了那个原因:
- 使用.NET Framework 4.7,它在
RichTextBox
RICHEDIT50W
使用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选择突出显示和RichTextBox无法显示Unicode数学字母数字符号 。