首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C# WebBrowser中加载本地HTML文件

在C# WebBrowser中加载本地HTML文件
EN

Stack Overflow用户
提问于 2011-08-25 17:45:37
回答 9查看 187.3K关注 0票数 65

在我的应用程序中,我有一个WebBrowser元素。

我想在里面加载一个本地文件。

我有一些问题:

  1. 放置HTML文件的位置(这样,如果用户执行安装程序,它也将被安装)
  2. 如何引用文件?(例如,我的猜测是用户的安装文件夹并不总是相同的)

编辑

我已经将HTML文件添加到我的项目中。

我已经设置好了,以便将其复制到输出文件夹中。

当我检查它时,它在运行时是存在的:\bin\Debug\Documentation\index.html

但是,当我执行以下操作时,会在webbrowser元素中得到一个'Page无法显示‘的错误。

我使用下面的代码尝试在Webbrowser中显示HTML文件。

代码语言:javascript
运行
复制
webBrowser1.Navigate(@".\Documentation\index.html");
EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2011-08-25 17:53:25

  1. 对Visual中的文件执行右键单击->属性
  2. 副本设置为“输出目录”为“复制始终为”。

然后,您将能够使用路径(如@".\my_html.html" )引用您的文件。

“复制到输出目录”将在生成项目时将文件放在与二进制dll相同的文件夹中。这适用于任何内容文件,即使它位于子文件夹中。

如果您使用一个子文件夹,它也将被复制到bin文件夹中,因此您的路径将是@".\my_subfolder\my_html.html"

为了创建您可以在本地使用的URI (而不是通过web服务),您需要使用文件协议,使用二进制文件的基本目录-注意:只有当您将副本设置为上面所述的Ouptut或路径不正确时,这才能工作。

这就是你需要的:

代码语言:javascript
运行
复制
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Url = new Uri(String.Format("file:///{0}/my_html.html", curDir));

当然,您必须更改变量和名称。

票数 111
EN

Stack Overflow用户

发布于 2013-02-01 14:27:03

很晚了,但这是我从谷歌找到的第一次成功

与其使用当前目录或获取程序集,只需使用Application.ExecutablePath属性:

代码语言:javascript
运行
复制
//using System.IO;  
string applicationDirectory = Path.GetDirectoryName(Application.ExecutablePath);
string myFile = Path.Combine(applicationDirectory, "Sample.html");
webMain.Url = new Uri("file:///" + myFile);
票数 14
EN

Stack Overflow用户

发布于 2013-12-16 13:29:21

请注意,file:///方案在紧凑的框架上不起作用,至少对5.0不起作用。

您将需要使用以下内容:

代码语言:javascript
运行
复制
string appDir = Path.GetDirectoryName(
    Assembly.GetExecutingAssembly().GetName().CodeBase);
webBrowser1.Url = new Uri(Path.Combine(appDir, @"Documentation\index.html"));
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7194851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档