我正在尝试使用webbrowser控件创建一个表单。我试图在webbrowser控件中打开一个本地html文件。我在Help_Print文件夹中有html文件,所以我使用下面的代码来指定webbrowser的Url。
wbPrint.Url = new Uri("file:///" + Application.StartupPath + "\\Help_Print\\help.html");
当表单显示webbrowser控件有错误“此程序无法显示网页”时。我检查了文件和文件夹的位置。
但是当我尝试这个时:
wbPrint.Url = new Uri("file:///" + Application.StartupPath + "/help.html");
将html文件复制到应用程序启动位置后,它可以正常工作。
任何人都可以解释为什么会发生这种情况,因为我想将所有html文件保存在一个单独的文件夹中。
答案 0 :(得分:3)
请勿在文件网址中使用黑色斜杠。请参阅the bizarre and unhappy story of file urls。
答案 1 :(得分:3)
我找到了解决问题的方法 - 尽管我不确定为什么我之前的代码无效。我换了两件事:
(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文件被标记为“复制到输出目录”属性为“始终复制”。
我认为第二个变化与我的问题解决方案有关,而不是第一个。如果您了解逻辑,请发表评论。
答案 2 :(得分:0)
使用语法:file:// c:/xyz.html