如何:使用 Windows 窗体 RichTextBox 控件显示 Web 样式的链接

Windows 窗体 RichTextBox 控件可以将 Web 链接显示为彩色或下划线形式。 可以编写代码,在单击链接时打开浏览器窗口,该窗口中显示链接文本中指定的网站。

使用 RichTextBox 控件链接到网页

  1. Text 属性设置为包含有效 URL(例如“https://www.microsoft.com/china”)。

  2. 确保将 DetectUrls 属性设置为 true(默认值)。

  3. 创建 Process 对象的新全局实例。

  4. LinkClicked 事件编写事件处理程序,将所需的文本发送到浏览器。

    在下面的示例中,LinkClicked 事件根据由 RichTextBox 控件的 Text 属性指定的 URL 打开 Internet Explorer 的一个实例。 此示例假定窗体具有 RichTextBox 控件。

    安全说明安全说明

    在调用 Process.Start 方法时,如果因特权不足而在部分信任的上下文中运行代码,则将遇到 SecurityException 异常。 有关更多信息,请参见代码访问安全性基础知识

    Public p As New System.Diagnostics.Process
    Private Sub RichTextBox1_LinkClicked _
       (ByVal sender As Object, ByVal e As _
       System.Windows.Forms.LinkClickedEventArgs) _
       Handles RichTextBox1.LinkClicked
          ' Call Process.Start method to open a browser
          ' with link text as URL.
          p = System.Diagnostics.Process.Start("IExplore.exe", e.LinkText)
    End Sub
    
    public System.Diagnostics.Process p = new System.Diagnostics.Process();
    
    private void richTextBox1_LinkClicked(object sender, 
    System.Windows.Forms.LinkClickedEventArgs e)
    {
       // Call Process.Start method to open a browser
       // with link text as URL.
       p = System.Diagnostics.Process.Start("IExplore.exe", e.LinkText);
    }
    
    public:
       System::Diagnostics::Process ^ p;
    
    private:
       void richTextBox1_LinkClicked(System::Object ^  sender,
          System::Windows::Forms::LinkClickedEventArgs ^  e)
       {
          // Call Process.Start method to open a browser
          // with link text as URL.
          p = System::Diagnostics::Process::Start("IExplore.exe",
             e->LinkText);
       }
    

    (Visual C++) 必须初始化进程 p,可以通过在窗体的构造函数中包含以下语句做到这一点:

    p = gcnew System::Diagnostics::Process();
    

    (Visual C# 和 Visual C++)在窗体的构造函数中放置以下代码以注册事件处理程序。

    this.richTextBox1.LinkClicked += new 
       System.Windows.Forms.LinkClickedEventHandler
       (this.richTextBox1_LinkClicked);
    
    this->richTextBox1->LinkClicked += gcnew
       System::Windows::Forms::LinkClickedEventHandler
       (this, &Form1::richTextBox1_LinkClicked);
    

    在使用完所创建的进程后立即停止它是很重要的。 请参考上面提供的代码,用于停止进程的代码可能类似于如下内容:

    Public Sub StopWebProcess()
       p.Kill()
    End Sub
    
    public void StopWebProcess()
    {
       p.Kill();
    }
    
    public: void StopWebProcess()
    {
       p->Kill();
    }
    

请参见

参考

DetectUrls

LinkClicked

RichTextBox

其他资源

RichTextBox 控件(Windows 窗体)

在 Windows 窗体上使用的控件