Как вставить гиперссылки в Rich Text Box в формате RTF - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь вставить гиперссылку на Rich Text Box в WinForms (используя. NET Framework 4.6.1). Я делаю это так: прошу вставить и URL-адрес, и текст, а затем добавлю его в rtb (я знаю, что может быть лучше сделать это с выделенным текстом, а затем запрашивать только URL-адрес).

Но когда я пытаюсь добавить RTF, получается, что он вообще не добавлен. Я добавляю его следующим образом:

   string rtf = $"{{\\field{{\\*\\fldinst HYPERLINK \"{url}\"}}{{\\fldrslt {urlText}}}}}";
   richTb.Rtf += rtf;

Я также пробовал добавлять вместо него richTb.SelectionRtf, но получил тот же результат. Я что-то упустил ??

1 Ответ

1 голос
/ 29 мая 2020

Для WinForms вы можете попробовать использовать LinkLabel

LinkLabel link = new LinkLabel();
link.Text = "Microsoft";
LinkLabel.Link data = new LinkLabel.Link();
data.LinkData = "https://www.microsoft.com/";
link.Links.Add(data);
link.Location = richTextBox1.GetPositionFromCharIndex(richTextBox1.TextLength);
richTextBox1.Controls.Add(link);

Для WPF вам нужно вставить гиперссылки, например Гиперссылка не похожа на текст:

Paragraph parx = new Paragraph();
Run run1 = new Run("Text preceeding the hyperlink.");
Run run2 = new Run("Text following the hyperlink.");
Run run3 = new Run("Link Text.");

Hyperlink hyperl = new Hyperlink(run3);
hyperl.NavigateUri = new Uri("http://search.msn.com");

parx.Inlines.Add(run1);
parx.Inlines.Add(hyperl);
parx.Inlines.Add(run2);

Добавление абзаца в RichTextBox должно выглядеть как

richTextBox1.IsDocumentEnabled = true;
richTextBox1.Document.Blocks.Add(parx);
...