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

时间:2009-09-07 02:46:56

标签: c# webbrowser-control

我正在尝试使用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文件保存在一个单独的文件夹中。

3 个答案:

答案 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