If you Process.Start the url, that should do the same as ShellExecute, which is the way you'd do it in native code.
You could use a LinkLabel from the toolbox, to get the link onto the form with the proper behaviour. Example code here.
Simpler version:
private void Form1_Shown (object sender, EventArgs e)
{
linkLabel1.Links.Add (0, 7, "http://bobmoore.mvps.org/");
linkLabel1.LinkClicked += new LinkLabelLinkClickedEventHandler(linkLabel1_LinkClicked);
}
private void linkLabel1_LinkClicked (object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
this.linkLabel1.Links[linkLabel1.Links.IndexOf (e.Link)].Visited = true;
string target = e.Link.LinkData as string;
System.Diagnostics.Process.Start (target);
}