This documentation is archived and is not being maintained.

Displaying Web-Style Links with the Windows Forms RichTextBox Control

Visual Studio .NET 2003

The Windows Forms RichTextBox control can display Web links as colored and underlined. You can write code that opens a browser window showing the Web site specified in the link text when the link is clicked.

To link to a Web page with the RichTextBox control

  1. Set the Text property to a string that includes a valid URL (for example, "http://www.Microsoft.com/").
  2. Make sure the DetectUrls property is set to true (the default).
  3. Instantiate a global instance of the Process object.
  4. Write an event handler for the LinkClicked event that sends the browser the desired text.

    In the example below, the LinkClicked event opens an instance of Internet Explorer to the URL specified in the Text property of the RichTextBox control. This example assumes a form with a RichTextBox control.

    Security Note   In calling the Start method, you will encounter a System.Security.SecurityException exception if you are running the code in a partial-trust context because of insufficient privileges. For more information, see Code Access Security Basics.
    ' Visual Basic
    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
    
    // C#
    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);
    }
    
    // C++
    public:
       System::Diagnostics::Process * p;
    
    private:
       System::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++ Note   You must initialize process
    p
    , which you can do by including the following statement in the constructor of your form:
    // C++
    p = new System::Diagnostics::Process();
    Visual C# and Visual C++ Note   Be sure that the necessary code to enable the event handler is present. In this case, it would be similar to the following:
    // C#
    this.richTextBox1.LinkClicked += new
    System.Windows.Forms.LinkClickedEventHandler
    (this.richTextBox1_LinkClicked);
    // C++
    this->richTextBox1->LinkClicked += new
    System::Windows::Forms::LinkClickedEventHandler
    (this, richTextBox1_LinkClicked);

    It is important to immediately stop the process you have created once you have finished working with it. Referring to the code presented above, your code to stop the process might look like this:

    ' Visual Basic
    Public Sub StopWebProcess()
       p.Kill()
    End Sub
    
    // C#
    public void StopWebProcess()
    {
       p.Kill();
    }
    
    // C++
    public: void StopWebProcess()
    {
       p->Kill();
    }
    

See Also

RichTextBox.DetectUrls Property | RichTextBox.LinkClicked Event | RichTextBox Class | RichTextBox Control (Windows Forms) | Controls You Can Use on Windows Forms

Show: