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

C# 如何使超链接在RichTextBox中工作?,c#,winforms,richtextbox,C#,Winforms,Richtextbox,当我将www.stackoverflow.com添加到我的RichTextBox并运行该程序时,它会以蓝色显示,并且是一个超链接,但当我单击它时,什么也没有发生。如何修复此问题?是否将您的文本框。DetectUrls设置为true?我们可能需要更多信息来提供更好的答案。RichTextBox类允许您自定义用户单击超链接时的行为。为事件添加事件处理程序 您应该确保DetectUrls设置为true。如果这本身不起作用,您可能需要为LinkClicked事件添加一个处理程序 确保text属性包含有效

当我将www.stackoverflow.com添加到我的RichTextBox并运行该程序时,它会以蓝色显示,并且是一个超链接,但当我单击它时,什么也没有发生。如何修复此问题?

是否将
您的文本框。DetectUrls
设置为true?我们可能需要更多信息来提供更好的答案。

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


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

  • 确保text属性包含有效的url。例如

  • DetectUrls属性设置为true

  • 为单击的链接事件编写事件处理程序

  • 就我个人而言,我不会将“IExplore.exe”作为参数传递给进程。请按照Microsoft的建议启动调用,因为这是以它已安装为前提的,并且是用户的首选浏览器。如果您只是将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.logThis 这可能是一个严重的安全风险。更好的方法是:
    System.Diagnostics.Process.Start(“explorer.exe”,e.LinkText)
    只是重申@Christian的观点--explorer.exe将参数传递给singleton,它保证在未提升的情况下运行。自己运行命令可能会提升,也可能不会提升。如果资源管理器在未提升的情况下运行它,并且它需要提升,UAC将询问。更安全。无法在RichTextBox中找到DetectUrl属性DetectUrl属性仅在WinForms版本的RichTextBox中。WPF版本没有此属性。试试这个链接:这是我找到的最好的线程(到目前为止)
    private void mRichTextBox_LinkClicked (object sender, LinkClickedEventArgs e) {
        System.Diagnostics.Process.Start(e.LinkText);
    }