2012-05-09 53 views
0

我有一个链接到窗体的数据库中保存的网址。如何获取网址并打开网页浏览器?采取保存的URL并打开网页浏览器c#

这就是它的存储

m_dtMedia.Rows[m_rowPosition]["File_Path"] 

我想要的是当你点击一个按钮,用于web broswer到oepn起来。

+1

[从WinForms应用程序启动URL]可能的重复(http://stackoverflow.com/questions/425381/launch-a-url-from-a-winforms-app) –

回答

1

你可以只启动一个新的进程与URL作为目标/文件名:

Process.Start("http://www.google.com"); 

这将有使用默认浏览器加载url的效果。

+0

感谢您的帮助。我将它与其他答案混合使用,并使用System.Diagnostics.Process.Start(“http://www.website.com”) –

+0

这将阻止您的用户界面,直到浏览器打开。 –

1
private static void OpenBrowser(string url) 
{ 
     if (url != null) 
     { 
      Process process = new Process(); 
      process.StartInfo.FileName = "rundll32.exe"; 
      process.StartInfo.Arguments = "url.dll,FileProtocolHandler " + url; 
      process.StartInfo.UseShellExecute = true; 
      process.Start(); 
     } 
} 

由于产卵另一个进程需要一点时间,而这种情况正在发生,您的用户界面将被阻止。我建议从后台线程调用此方法。例如:

Task.Factory.StartNew(()=>{OpenBrowser(url);}); 

使用此方法,因为从UI线程调用的Process.Start(字符串)导致异常

+3

这是waaaay太多的代码这个问题提出了什么问题。 :)不downvoting,但'System.Diagnostics.Process.Start(“http://www.website.com”)'本身工作正常。 –

+0

以前从未见过任何人使用过url.dll,FileProtocolHandler。有趣的决定。为什么这个方法? –

+0

调用Process.Start从UI线程将阻止您的用户界面使其无响应,直到浏览器打开网站。你不能从UI线程调用Process.Start(string) - 它会导致异常。要从主UI线程以外的线程打开一个进程,你必须经过上面的循环。 –

相关问题