如何使超链接在 RichTextBox 中工作?

Posted

技术标签:

【中文标题】如何使超链接在 RichTextBox 中工作?【英文标题】:How can I make a hyperlink work in a RichTextBox? 【发布时间】:2010-09-30 22:33:24 【问题描述】:

当我将 www.***.com 添加到我的 RichTextBox 并运行程序时,它以蓝色和超链接显示,但是当我单击它时,什么也没有发生。我该如何解决这个问题?

【问题讨论】:

***.com/questions/762271/… 是我找到的最好的线程(到目前为止) 【参考方案1】:

    确保 text 属性包含有效的 url。例如。 http://www.***.com/

    DetectUrls 属性设置为 true

    LinkClicked 事件编写事件处理程序。

就个人而言,我不会像 Microsoft 建议的那样将 "IExplore.exe" 作为参数传递给 Process.Start 调用,因为这假定它已安装,并且是用户的首选浏览器。如果您只是将 url 传递给 process start(如下所示),那么 Windows 将做正确的事情并使用适当的 url 启动用户首选的浏览器。

private void mRichTextBox_LinkClicked (object sender, LinkClickedEventArgs e) 
    System.Diagnostics.Process.Start(e.LinkText);

【讨论】:

UNC 是否可以使用 E:\My Documents\Logs\log1.log 等路径? @Kiquenet - 不确定,但尝试使用表单 file:////e:/My%20Documents/Logs/log1.log 的条目 这可能是一个严重的安全风险。更好的方法是:System.Diagnostics.Process.Start("explorer.exe", e.LinkText); 只是为了重申@Christian 的观点——explorer.exe 将参数传递给一个单例,保证在未提升的情况下运行。自己运行命令它可能会或可能不会被提升。如果资源管理器在未提升的情况下运行它,并且需要提升,UAC 会询问。更安全。【参考方案2】:

您应该确保将DetectUrls 设置为true。如果这本身不起作用,您可能需要为 LinkClicked 事件添加一个处理程序。

【讨论】:

无法在 RichTextBox 中找到 DetectUrl 属性 DetectUrl 属性仅在 WinForms 版本的 RichTextBox 中。 WPF 版本没有这个属性。试试这个链接:***.com/questions/762271/…【参考方案3】:

RichTextBox 类允许您自定义用户单击超链接时的行为。为RichTextBox.LinkClicked 事件添加事件处理程序

Process p = new Process();

private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)

   p = Process.Start("IExplore.exe", e.LinkText);

【讨论】:

【参考方案4】:

yourTextBox.DetectUrls 是否设置为 true?我们可能需要更多信息才能提供更好的答案。

【讨论】:

以上是关于如何使超链接在 RichTextBox 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用angularjs变量使超链接移动到下一页?

如何让 TLinkLabel 在 Delphi 中工作?

回溯如何在 Python 中工作

WPF - 使超链接可点击

点击它时,超链接无法在ckeditor中工作

如何让 sum 函数在 RODBC 中的 SQLquery 中工作