C# RichTextBox中RTF文件中断开的超链接
我使用C# RichTextBox中RTF文件中断开的超链接,c#,.net,winforms,richtextbox,rtf,C#,.net,Winforms,Richtextbox,Rtf,我使用RichTextBox来显示一个RTF文件,其中包含一个超链接。链接文本不是URL(目标是有效的URL)。RTF是用Word创建的。Word和写字板都能正确识别链接(写字板不会启动链接,但会显示相应的手动光标) 当我将RTF加载到RichTextBox中时,链接显示格式正确(蓝色和下划线),但其行为不像链接,当光标移动到链接上时,它仍然是一个工字梁,单击的LinkClicked事件将不会触发,它实际上会在链接后的尖括号中显示目标(这似乎不正确)。由于链接文本不是URL,DetectUrls
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
(我在C#Express 2008中使用.NET 2.0)。要支持超链接,您需要
为此:
- 或者使用.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; } } }
基于和。您好,您在RTF中尝试过带重音的字符吗?它正常工作了吗?