【问题标题】:Detect a hyperlink检测超链接
【发布时间】:2011-08-17 15:46:41
【问题描述】:
我有一个 RichTextBox,当用户输入他们的文本时,他们经常会输入一些页面的链接。我想要做的是检测链接并使其成为真正的超链接 - 突出显示它,加下划线并使其可点击。这应该适用于两种情况:
- 当用户手动键入链接时(因此引发 KeyDown 事件时)
- 使用“粘贴”功能将链接添加到 RichTextBox 时
我找到了以下链接:http://forum.phux.org/viewtopic.php?f=18&t=78,但它不满足所有要求(例如,超链接不可点击,检测链接的正则表达式有一些不足(例如,它不识别 https)
有人可以帮我找出如何使超链接可点击以及如何扩展正则表达式以满足所有要求吗?
【问题讨论】:
标签:
wpf
hyperlink
richtextbox
【解决方案1】:
"(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 - 是正则表达式的结果。但不仅仅是Add(),您应该找到匹配文本的开始和结束位置并执行上述操作。