Динамическое добавление гиперссылок в RichTextBox - PullRequest
10 голосов
/ 14 февраля 2012

Я пытаюсь динамически добавить некоторые гиперссылки на RichTextBox, используя WPF и C #, но не добиваюсь большого успеха.Мой код приведен ниже:

FlowDocument doc = new FlowDocument();
richTextBox1.Document = doc;
richTextBox1.IsReadOnly = true;

Paragraph para = new Paragraph();
doc.Blocks.Add(para);

Hyperlink link = new Hyperlink();
link.IsEnabled = true;
link.Inlines.Add("Hyperlink");
link.NavigateUri = new Uri("http://www.google.co.uk");
link.Click += new RoutedEventHandler(this.link_Click);
para.Inlines.Add(link);

....

protected void link_Click(object sender, RoutedEventArgs e) {
    MessageBox.Show("Clicked link!");
}

Когда я запускаю это, RichTextBox показывает ссылку, но она серого цвета, и я не могу щелкнуть по ней?Может кто-нибудь, пожалуйста, укажите, где я могу пойти не так.

Спасибо.

Ответы [ 2 ]

9 голосов
/ 14 февраля 2012

Document в RichTextBox по умолчанию отключено, установите RichtTextBox.IsDocumentEnabled на true.

2 голосов
/ 30 сентября 2013

Простое решение для чтения текста richTextBox и преобразования его в ссылку:

richTextBox.IsDocumentEnabled = true;

TextPointer t1 = richTextBox1.Document.ContentStart;
TextPointer t2 = richTextBox1.Document.ContentEnd;
TextRange tr = TextRange(t1,t2);
string URI = tr.Text;

Hyperlink link = new Hyperlink(t1, t2);

link.IsEnabled = true;
link.NavigateUri = new Uri(URI); 
link.RequestNavigate += new RequestNavigateEventHandler(link_RequestNavigate);


private void link_RequestNavigate(object sender,RequestNavigateEventArgs e)
{
    System.Diagnostics.Process.Start(e.Uri.AbsoluteUri.ToString());
}
...