在Windows窗体应用程序中使用C#的WebBrowser控件#

问题描述:

我想创建一个带有浏览器控件的窗体。我试图在webbrowser控件中打开一个本地html文件。我在Help_Print文件夹中有html文件,所以我使用下面的代码来指定webbrowser的Url。在Windows窗体应用程序中使用C#的WebBrowser控件#

wbPrint.Url = new Uri("file:///" + Application.StartupPath + "\\Help_Print\\help.html"); 

当窗体显示webbrowser控件有错误“该程序无法显示网页”。我检查了文件和文件夹位置。

但当我尝试这个办法:

wbPrint.Url = new Uri("file:///" + Application.StartupPath + "/help.html"); 

复制HTML文件到它正常工作的应用程序的启动位置之后。

任何人都可以请解释为什么会发生这种情况,因为我想保留所有的html文件在一个单独的文件夹中。

我发现我的问题的解决方案,即使我不知道为什么我以前的代码不起作用。我改变了两件事:

(i)我删除了Uri,正如我在回答我的另一个问题时所建议的那样,对于本地html文件,我不需要使用Uri。所以这里是工作的代码。

 String sitePath = null; 
     try 
     { 
      sitePath = Application.StartupPath + @"\Print_Help\help.html"; 
      wbHelp.Navigate(sitePath); 
     } 
     catch (Exception exp) 
     { 
      MessageBox.Show(exp.ToString() + "\nSite Path: " + sitePath); 
      return false; 
     } 
     return true; 

(ii)我做的另一件事是手动创建Print_Help文件夹。以前它是在我构建我的项目时创建的,因为html文件被标记为“复制到输出目录”属性为“始终复制”。

我认为第二个变化与我的问题解决方案有关,而不是第一个。如果你了解逻辑,请发表评论。

请勿在文件URL中使用黑色斜杠。请参阅the bizarre and unhappy story of file urls

+0

感谢您的及时回复。即使我使用斜杠: wbPrint.Url = new Uri(“file:///”+ Application.StartupPath +“/Help_Print/help.html”); 我得到同样的错误。 – kobra 2009-09-07 03:01:37

+0

也许你在Help_Print文件夹上有权限问题? – 2009-09-07 03:05:59

+0

我确定没有权限问题,因为我可以使用以下方式打开文件: System.Diagnostics.Process.Start(“。\\ Print_Help \\ help.html”); 构成另一种形式。而且,如果我将文件放在Help_Print的父文件夹中,我可以在web浏览器控件中看到该文件。 – kobra 2009-09-07 03:16:47

使用语法:file:// c:/xyz.html