在C#WebBrowser中加载本地HTML文件
在我的应用程序中,我有一个WebBrowser元素。
我想加载一个本地文件。
我有一些疑问:
- 放置HTML文件的位置(以便在用户执行设置时也会安装)
- 如何引用该文件? (例如,我的猜测是用户的安装文件夹不总是相同的)
编辑
我已经将HTML文件添加到我的项目中。
我已经设置它,以便它被复制到输出文件夹。
当我检查它时运行:\ bin \ Debug \ Documentation \ index.html
但是,当我做到以下我得到一个“页面无法显示”错误在webbrowser元素。
我使用下面的代码尝试在Web浏览器中显示HTML文件。
webBrowser1.Navigate(@".\Documentation\index.html");
- 在Visual Studio中对该文件执行右键单击 – >属性 。
- 将复制到输出目录设置为始终复制 。
然后,您将能够通过使用诸如@".\my_html.html"
类的path来引用您的文件
复制到输出目录将在build立项目时将文件放在与您的二进制DLL相同的文件夹中。 这适用于任何内容文件,即使它在一个子文件夹中。
如果你使用的是一个子文件夹,那么这个文件夹也会被复制到bin文件夹中,所以你的path将会是@".\my_subfolder\my_html.html"
为了创build一个URI,您可以在本地使用(而不是通过networking进行encryption),您需要使用文件协议,使用二进制文件的基本目录 – 注意:只有当您将Copy设置为Ouptut如上所述的目录或path将不正确。
这是你需要的:
string curDir = Directory.GetCurrentDirectory(); this.webBrowser1.Url = new Uri(String.Format("file:///{0}/my_html.html", curDir));
你将不得不改变当然的variables和名称。
相当晚,但这是我从谷歌find的第一个打击
而不是使用当前目录或获取程序集,只需使用Application.ExecutablePath
属性:
//using System.IO; string applicationDirectory = Path.GetDirectoryName(Application.ExecutablePath); string myFile = Path.Combine(applicationDirectory, "Sample.html"); webMain.Url = new Uri("file:///" + myFile);
请注意, file:///
scheme在Compact Framework上不起作用,至less它不适用于5.0。
您将需要使用以下内容:
string appDir = Path.GetDirectoryName( Assembly.GetExecutingAssembly().GetName().CodeBase); webBrowser1.Url = new Uri(Path.Combine(appDir, @"Documentation\index.html"));
- 将其放置在应用程序安装文件夹或下面的separte文件夹中
- 运行应用程序时相对于当前目录引用它。
- 在你要运行的程序集附近的某个地方。
- 使用reflection来获得正在执行的程序集的path,然后做一些魔术来find你的HTML文件。
喜欢这个:
var myAssembly = System.Reflection.Assembly.GetEntryAssembly(); var myAssemblyLocation = System.IO.Path.GetDirectoryName(a.Location); var myHtmlPath = Path.Combine(myAssemblyLocation, "my.html");
对我有效的是
<WebBrowser Source="pack://siteoforigin:,,,/StartPage.html" />
从这里 。 我将StartPage.html复制到与xaml文件相同的输出目录,并从相对path加载它。
Windows 10的uwp
应用程序。
尝试这个:
webview.Navigate(new Uri("ms-appx-web:///index.html"));
更新上面的@ghostJago答案
对我来说,它在VS2017
工作如下
string curDir = Directory.GetCurrentDirectory(); this.webBrowser1.Navigate(new Uri(String.Format("file:///{0}/my_html.html", curDir)));