C# - 让您的桌面应用程序打开系统浏览器并跳转到特定网页

3

可能是重复问题:
在Windows Forms中打开URL

你好!

我有一个C#桌面应用程序,我想能够在其中拥有一个链接,点击它可以在系统默认浏览器中打开特定的网页,并在新的浏览器窗口/标签中打开。 我在网络上寻找了这个功能,但还没有找到任何东西。 需要帮助吗? 谢谢...


那个问题并没有涉及到链接方面,只是启动方面。 - Bob Moore
真的很遗憾我无法撤销我的关闭投票。不过将这两个问题链接起来还是很有用的。 - Blorgbeard
2个回答

7
如果你使用Process.Start打开URL,那应该与ShellExecute相同,这是在本地代码中执行的方法。 您可以使用工具箱中的LinkLabel将链接放到表单上并获得正确的行为。示例代码here。 更简单的版本:
  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);
  }

实际上这不是“另一种选择”。LinkLabel 不会自动在默认浏览器中打开 URL。你仍然需要使用 Process.Start 来完成这个操作。 - Sani Huttunen
嗯,我一直以为它会这样做,但微软的代码表明你必须使用事件处理程序 - 是的,我刚试了一下,这个东西只是坐在那里什么也不做 <叹气>。我已经进行了编辑。 - Bob Moore
一个链接并不一定与URL相关联。您可以使用LinkLabel来显示另一个窗体,转到特定选项卡或其他与浏览器无关的内容。您还可以将多个URL与LinkLabel相关联。如果单击链接,应该导航到哪个URL?您可以将LinkLabel视为具有特殊属性“链接”的按钮。 - Sani Huttunen
是的,我看了他们的示例,你可以添加多个链接(这就是为什么我在我的答案中编辑了一个更简单的版本)。对我来说,他们也可以有一个SimpleLinkLabel,其中包含一个单独的URL属性,这将满足95%的用例...并让那些实际需要高级功能的人努力使用更强大的linklabel。嘿,感谢澄清。今天学到了东西 :) - Bob Moore
哦,我也给你点了赞。 - Bob Moore

4
你应该使用一个链接标签控件和Process.Start
这里有一个如何使用它的例子。
PS. 如果你想在将来得到帮助,你真的应该开始接受答案。

是的,谢谢。我只是还没有看到它们。我已经给两个答案点赞并接受了你的答案。再次感谢你们快速的回答。 - user295744

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接