Определить гиперссылку - PullRequest
       24

Определить гиперссылку

2 голосов
/ 17 августа 2011

У меня есть RichTextBox, когда пользователи вводят свой текст, довольно часто они вводят ссылки на некоторые страницы.То, что я хочу сделать, это обнаружить ссылку и сделать ее настоящей гиперссылкой - выделите ее, подчеркните ее и сделайте ее интерактивной.Это должно работать для двух сценариев:

  • , когда пользователь вводит ссылку вручную (например, при возникновении события KeyDown)
  • , когда ссылка добавляется в RichTextBox с использованием функции «вставка»

Я нашел следующую ссылку: http://forum.phux.org/viewtopic.php?f=18&t=78, но она не удовлетворяет всем требованиям (например, гиперссылка не активна, а Regex для обнаружения ссылок имеет некоторые недостатки (например, нет).не может распознать https) Может кто-нибудь помочь мне узнать, как сделать гиперссылку кликабельной и как расширить Regex, чтобы выполнить все требования?

1 Ответ

0 голосов
/ 17 августа 2011

"(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(), вы должны найти начальную и конечную позицию сопоставленного текста и выполнить с ним действие, как указано выше.

...