是否可以动态添加超链接而无需像此问题Dynamically adding hyperlinks to a RichTextBox那样创建新的段落?

我想要类似“请访问http://www.google.com。谢谢!”之类的内容。不

“请拜访

http://www.google.com

。谢谢!”。

并且RichTextBox必须是只读的,用户不能键入它。就像日志一样,我需要的是定期添加一些有时包含URL的文本。

最佳答案

OK,看起来这就是我需要的(感谢@Blam和@PaulN Dynamically adding hyperlinks to a 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.");
    }




但是还有一个小问题:也许有人知道如何删除开头的空白,该空白在上面的图像中用红线标记了吗?

关于c# - 在没有新段落的情况下将可点击的超链接添加到RichTextBox中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12303414/

10-13 08:59