如何在 RTF 格式的富文本框中插入超链接

How to insert hyperlinks in Rich Text Box in RTF format

我正在尝试在 WinForms(使用 .NET Framework 4.6.1)中插入指向富文本框的超链接。 我这样做的方式是要求插入 URL 和文本,然后将其附加到 rtb(我知道用选定的文本来做可能更好,然后只要求 URL).

但是当我尝试附加 RTF 时,就好像根本没有附加一样。我附加它的方式如下:

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

我也尝试过附加到 richTb.SelectionRtf,但我得到了相同的结果。我错过了什么吗??

对于 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 你必须插入像 Hyperlink 这样的超链接而不是像文本:

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);