如何在RichTextBox中创建超链接?

46 c# richtextbox winforms

当我将www.stackoverflow.com添加到我的RichTextBox并运行程序时,它显示为蓝色和超链接,但当我点击它时没有任何反应.我怎样才能解决这个问题?

Sam*_*rum 126

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

  2. DetectUrls属性设置为true

  3. LinkClicked事件编写事件处理程序.

就个人而言,我不会将"IExplore.exe"作为参数传递给微软建议的Process.Start调用,因为这预先假定它已安装,并且是用户首选的浏览器.如果您只是将url传递给进程启动(如下所示),那么Windows将做正确的事情,并使用相应的URL启动用户首选的浏览器.

private void mRichTextBox_LinkClicked (object sender, LinkClickedEventArgs e) {
    System.Diagnostics.Process.Start(e.LinkText);
}
Run Code Online (Sandbox Code Playgroud)

  • 这可能是一个严重的安全风险.更好的方法是:`System.Diagnostics.Process.Start("explorer.exe",e.LinkText);` (7认同)
  • 只是要重申@Christian的意思-** explorer.exe **将参数传递给单例,这可以保证运行不升高。自己运行命令可能会提升也可能不会提升。如果资源管理器未升高运行它,并且需要升高,则UAC会询问。安全得多。 (2认同)

aku*_*aku 10

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

Process p = new Process();

private void richTextBox1_LinkClicked(object sender, LinkClickedEventArgs e)
{
   p = Process.Start("IExplore.exe", e.LinkText);
}
Run Code Online (Sandbox Code Playgroud)


And*_*are 1

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