rtftextbox и гиперссылки / якоря внутри документа - PullRequest
0 голосов
/ 04 декабря 2008

Несколько часов назад я обнаружил, что действительно легко отобразить документ * .rtf с помощью стандартного элемента управления winforms .net 2.0 (RichTextBox). Это действительно круто, что он может отображать даже картинки, но для меня есть одна отсутствующая функция - гиперссылки. Я подготовил документ * .rtf с несколькими гиперссылками на абзацы внутри документа. Затем я помещаю этот файл в ресурсы и загружаю в свойство управления rtf, но, к несчастью, нажатие на ссылки не работает. Возможен ли взлом или обходной путь для включения гиперссылок?

EDIT:

Мой клиент подготовит один короткий документ (скажем, один файл * .docx или один файл * .html).

Он будет содержать несколько глав, и мы хотим разместить небольшое оглавление в верхней части документа.

Ожидаемое поведение заключается в том, что пользователь щелкает тему, а элемент управления прокручивает ее содержимое до нужного места в документе.

Так что, возможно, дело не в ссылках, а в закладках.


Хорошо, я постараюсь описать большую часть необходимого решения.

Мой клиент подготовит один короткий документ (скажем, один файл * .docx или один файл * .html).

Он будет содержать несколько глав, и мы хотим разместить небольшое оглавление в верхней части документа.

Ожидаемое поведение: пользователь щелкает тему, а элемент управления прокручивает ее содержимое до нужного места в документе.

Так что, возможно, дело не в ссылках, а в закладках.

1 Ответ

1 голос
/ 04 декабря 2008

Как отформатированы ваши ссылки и действительно ли DetectUrl соответствует действительности?

Из кода проекта -> только ссылки, начинающиеся с одного из распознанных протоколов (http :, файл :, mailto :, ftp :, https :, gopher :, nntp :, prospero :, telnet :, news :, wais :, мировоззрение :) признано и переформатировано.

http://www.codeproject.com/KB/edit/RichTextBoxLinks.aspx

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.detecturls(VS.80).aspx

В статье Microsoft приведен пример события LinkClicked.

private void Link_Clicked (object sender, System.Windows.Forms.LinkClickedEventArgs e)
{
   System.Diagnostics.Process.Start(e.LinkText);
}
...