如何:使用 Windows 窗体 RichTextBox 控件显示 Web 样式的链接
更新:2007 年 11 月
Windows 窗体 RichTextBox 控件可以将 Web 链接显示为彩色或下划线形式。可以编写代码,在单击链接时打开浏览器窗口,该窗口中显示链接文本中指定的网站。
使用 RichTextBox 控件链接到网页
将 Text 属性设置为包含有效 URL(例如“https://www.microsoft.com/china”)。
确保将 DetectUrls 属性设置为 true(默认值)。
创建 Process 对象的新全局实例。
为 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(); }