在我的应用程序中,我有一个WebBrowser元素。
我想在里面加载一个本地文件。
我有一些问题:
编辑
我已经将HTML文件添加到我的项目中。
我已经设置好了,以便将其复制到输出文件夹中。
当我检查它时,它在运行时是存在的:\bin\Debug\Documentation\index.html
但是,当我执行以下操作时,会在webbrowser元素中得到一个'Page无法显示‘的错误。
我使用下面的代码尝试在Webbrowser中显示HTML文件。
webBrowser1.Navigate(@".\Documentation\index.html");
发布于 2011-08-25 17:53:25
然后,您将能够使用路径(如@".\my_html.html"
)引用您的文件。
“复制到输出目录”将在生成项目时将文件放在与二进制dll相同的文件夹中。这适用于任何内容文件,即使它位于子文件夹中。
如果您使用一个子文件夹,它也将被复制到bin文件夹中,因此您的路径将是@".\my_subfolder\my_html.html"
。
为了创建您可以在本地使用的URI (而不是通过web服务),您需要使用文件协议,使用二进制文件的基本目录-注意:只有当您将副本设置为上面所述的Ouptut或路径不正确时,这才能工作。
这就是你需要的:
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Url = new Uri(String.Format("file:///{0}/my_html.html", curDir));
当然,您必须更改变量和名称。
发布于 2013-02-01 14:27:03
很晚了,但这是我从谷歌找到的第一次成功
与其使用当前目录或获取程序集,只需使用Application.ExecutablePath
属性:
//using System.IO;
string applicationDirectory = Path.GetDirectoryName(Application.ExecutablePath);
string myFile = Path.Combine(applicationDirectory, "Sample.html");
webMain.Url = new Uri("file:///" + myFile);
发布于 2013-12-16 13:29:21
请注意,file:///
方案在紧凑的框架上不起作用,至少对5.0不起作用。
您将需要使用以下内容:
string appDir = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().GetName().CodeBase);
webBrowser1.Url = new Uri(Path.Combine(appDir, @"Documentation\index.html"));
https://stackoverflow.com/questions/7194851
复制相似问题