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

hujrc8aj  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(152)

我尝试在WinForms中插入一个指向富文本框的超链接(使用.NET Framework 4.6.1)。我的做法是要求插入URL和文本,然后将其附加到rtb(我知道最好是使用选定的文本,然后只要求插入URL)。
但是当我试图追加RTF时,它就好像根本没有被追加一样。我追加它的方法如下:

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

我也尝试过将其附加到richTb.SelectionRtf,但得到了相同的结果。我是否遗漏了什么?

qyswt5oh

qyswt5oh1#

对于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);
nfzehxib

nfzehxib2#

您可以使用Word打开RTF文件并手动添加链接

相关问题