【问题标题】:Dynamically adding hyperlinks to a RichTextBox动态添加超链接到 RichTextBox
【发布时间】:2012-03-05 22:46:59
【问题描述】:

我正在尝试使用 WPF 和 C# 向 RichTextBox 动态添加一些超链接,但没有取得多大成功。我的代码总结如下:

FlowDocument doc = new FlowDocument();
richTextBox1.Document = doc;
richTextBox1.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");
link.Click += new RoutedEventHandler(this.link_Click);
para.Inlines.Add(link);

....

protected void link_Click(object sender, RoutedEventArgs e) {
    MessageBox.Show("Clicked link!");
}

当我运行它时,RichTextBox 会显示链接,但它是灰色的,我无法点击它?有人可以指出我可能出错的地方。

谢谢。

【问题讨论】:

    标签: c# wpf hyperlink richtextbox


    【解决方案1】:

    RichTextBox 中的Document 默认禁用,将RichtTextBox.IsDocumentEnabled 设置为true

    【讨论】:

    • 为什么默认不开启?
    【解决方案2】:

    读取richTextBox 文本并将其转换为链接的简单解决方案:

    richTextBox.IsDocumentEnabled = true;
    
    TextPointer t1 = richTextBox1.Document.ContentStart;
    TextPointer t2 = richTextBox1.Document.ContentEnd;
    TextRange tr = TextRange(t1,t2);
    string URI = tr.Text;
    
    Hyperlink link = new Hyperlink(t1, t2);
    
    link.IsEnabled = true;
    link.NavigateUri = new Uri(URI); 
    link.RequestNavigate += new RequestNavigateEventHandler(link_RequestNavigate);
    
    
    private void link_RequestNavigate(object sender,RequestNavigateEventArgs e)
    {
        System.Diagnostics.Process.Start(e.Uri.AbsoluteUri.ToString());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多