在我的应用程序中,我有一个WebBrowser元素。
我想在其中加载一个本地文件。
我有一些问题:
修改
我已将HTML文件添加到我的项目中。
我已将其设置为将其复制到输出文件夹。
当我检查它时,它运行时出现:\ bin \ Debug \ Documentation \ index.html
然而,当我执行以下操作时,我在webbrowser元素中出现“无法显示页面”错误。
我使用以下代码尝试在Webbrowser中显示HTML文件。
webBrowser1.Navigate(@".\Documentation\index.html");
答案 0 :(得分:87)
然后,您将能够使用@".\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));
当然,您必须更改变量和名称。
答案 1 :(得分:12)
很晚但是这是我从谷歌发现的第一个打击
只需使用Application.ExecutablePath
属性:
//using System.IO;
string applicationDirectory = Path.GetDirectoryName(Application.ExecutablePath);
string myFile = Path.Combine(applicationDirectory, "Sample.html");
webMain.Url = new Uri("file:///" + myFile);
答案 2 :(得分:5)
请注意,file:///
方案在紧凑框架上不起作用,至少它不适用于5.0。
您需要使用以下内容:
string appDir = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().GetName().CodeBase);
webBrowser1.Url = new Uri(Path.Combine(appDir, @"Documentation\index.html"));
答案 3 :(得分:4)
答案 4 :(得分:3)
像这样:
var myAssembly = System.Reflection.Assembly.GetEntryAssembly();
var myAssemblyLocation = System.IO.Path.GetDirectoryName(a.Location);
var myHtmlPath = Path.Combine(myAssemblyLocation, "my.html");
答案 5 :(得分:1)
上面的@ghostJago回复
对我来说,它在VS2017
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Navigate(new Uri(String.Format("file:///{0}/my_html.html", curDir)));
答案 6 :(得分:0)
对我有用的是
<WebBrowser Source="pack://siteoforigin:,,,/StartPage.html" />
来自here的。我将StartPage.html复制到与xaml文件相同的输出目录,并从该相对路径加载它。
答案 7 :(得分:0)
Windows 10 uwp
应用程序。
试试这个:
webview.Navigate(new Uri("ms-appx-web:///index.html"));
答案 8 :(得分:0)
我一直在尝试不同的答案,但设法得出了一些有用的东西,这里是:
1- 在我在项目级别创建的名为 WebPagesHelper 的文件夹中添加了页面
2- 要通过 webBrowser Control 打印页面,
string curDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
var uri = new Uri(curDirectory);
string myFile = Path.Combine(uri.AbsolutePath, @"WebPagesHelper\index.html");
Uri new_uri = new Uri(myFile);
我必须获取程序集路径,创建第一个 uri 以获取不附加“file://”的绝对路径,接下来我将此绝对路径与其文件夹中页面的相对路径结合起来,然后创建另一个结果中的 URI。
然后将此传递给 webBrowser URL 属性 webBrowser.URL = new_uri;