添加可点击的超链接到没有新段落的RichTextBox

是否可以动态添加超链接而不创建新的段落,如此问题动态添加超链接到RichTextBox ?

我想要“请访问http://www.google.com 。谢谢!” 不

“请拜访

http://www.google.com

。谢谢!”。

此外,RichTextBox必须是只读的,用户无法输入。 这就像日志一样,我只需要定期添加一些有时包含URL的文本。

好的,看起来就像我需要的那样(感谢@Blam和@PaulN 动态添加到RichTextBox的超链接 ):

public MainWindow() { InitializeComponent(); rtb.IsDocumentEnabled = true; rtb.Document.Blocks.FirstBlock.Margin = new Thickness(0); } private void AddHyperlinkText(string linkURL, string linkName, string TextBeforeLink, string TextAfterLink) { Paragraph para = new Paragraph(); para.Margin = new Thickness(0); // remove indent between paragraphs Hyperlink link = new Hyperlink(); link.IsEnabled = true; link.Inlines.Add(linkName); link.NavigateUri = new Uri(linkURL); link.RequestNavigate += (sender, args) => Process.Start(args.Uri.ToString()); para.Inlines.Add(new Run("[" + DateTime.Now.ToLongTimeString() + "]: ")); para.Inlines.Add(TextBeforeLink); para.Inlines.Add(link); para.Inlines.Add(new Run(TextAfterLink)); rtb.Document.Blocks.Add(para); } private void button1_Click(object sender, RoutedEventArgs e) { AddHyperlinkText("http://www.google.com", "http://www.google.com", "Please visit ", ". Thank you! Some veeeeeeeeeery looooooong text."); } 

在此处输入图像描述

但是还有一个小问题:也许有人知道如何删除开头的空白区域,上面的图像上标有红线?

至于使RichTextBox或TextBox只读

TextBoxBase.IsReadOnly属性

要添加文本,您可以使用运行

  FlowDocument doc = new FlowDocument(); rtb.Document = doc; rtb.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"); para.Inlines.Add(link); Run run = new Run(); run.Text = " next words"; para.Inlines.Add(run); 

你可以做到

           

如果您在navigationFrame中,则可以免费获得超链接function

要么…

      

注意:要通过执行以下操作从RichText中删除空行:

 MyRichTextBox.Document.Blocks.Clear(); 

在添加段落运行时,在RichTextBox的开头移动空格