检测超链接

时间:2011-08-17 07:09:11

标签: wpf hyperlink richtextbox

我有一个RichTextBox,当用户输入他们的文本时,他们经常会输入指向某些页面的链接。我想要做的是检测链接并使其成为真正的超链接 - 突出显示它,加下划线并使其可点击。这适用于两种情况:

  • 当用户手动键入链接时(所以当引发KeyDown事件时)
  • 使用“粘贴”功能将链接添加到RichTextBox时

我找到了以下链接:http://forum.phux.org/viewtopic.php?f=18&t=78但它不符合所有要求(例如,超链接不可点击,并且用于检测链接的正则表达式有一些缺点(例如,它无法识别https) 有人可以帮助我找出如何使超链接可点击以及如何扩展正则表达式以满足所有要求?

1 个答案:

答案 0 :(得分:0)

“(HTTP | HTTPS)://([A-ZA-Z0-9 \〜\ \ @ \#\ $ \%\ ^ \&安培; \ * \(\)_ \ - \ = \ ?+ \\\ / \ \ \:?\; \'\,*)”

用于http / https。你可以用同样的方式添加ftp,files:///等。

要使超链接可点击,你可以这样做:

FlowDocument myFlowDoc = new FlowDocument();
// Add hyperlink to the FlowDocument.
myFlowDoc.Blocks.Add(new Hyperlink(new Run(MatchedText)));

其中MatchedText - 是Regex的结果。但不仅仅是Add(),您应该找到匹配文本的开始和结束位置,并执行上述操作。