我正在使用RichTextBox
来显示RTF文件,其中包含一个超链接。链接文本不是URL(目标 是有效的URL)。 RTF是使用Word创建的。 Word和写字板都能正确识别链接(写字板不会启动链接,但会显示相应的手形光标)。
当我将RTF加载到RichTextBox
时,链接显示格式正确(蓝色和下划线),但不是表现得像链接,当光标在链接上移动时,它仍然是工字梁,{ {1}}事件不会触发,它实际上显示链接后尖括号之间的目标(这似乎不正确)。由于链接文字不是网址,因此LinkClicked
无效。
是否有DetectUrls
没有正确处理这些链接的原因,或者让它们按预期工作的方法?
这是代码。
RichTextBox
要重现此问题,请使用Word(我正在使用2000)创建一个RTF文档,其中包含一个文本不是URL但是以有效URL为目标的链接,并以编程方式将.rtf文件加载到TipView.Rtf = tips[tipIndex];
// I've also tried TipView.LoadFile, with identical result
(我在C#Express 2008中使用.NET 2.0)。
答案 0 :(得分:4)
要支持超链接,您需要RICHEDIT50W
version of "rich edit"。
为此:
RICHEDIT50W
本身使用RichTextBox
。在旧版.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 Highlight和RichTextBox cannot display Unicode Mathematical alphanumeric symbols 。