显示来自自定义控件的本地 HTML 页面

Display local HTML page from custom control

我想制作一个控件,作为 Javascript 库的包装器。这是一个 Web 浏览器控件,显示我编写的 HTML 页面,用 C# 函数包装 JS 函数。

我的问题是如何将 .html 页面与控件的构建捆绑在一起。

我想包含 html 文件作为相对路径。我正在做的是:

this.Url = new Uri(System.IO.Path.GetFullPath(@"WebPage\leaflethtml.html"));

在控件的构造函数中。

出现的问题是,在设计器中,相对路径更改为当前工作目录(Visual Studio设计器的目录)的相对路径,因此 Uri 查看<VisualStudioFilePath>\WebPage\leaflethtml.html 而不是 <ControlBinary>\WebPage\leaflethtml.html 和 returns 一条错误消息(这不是什么大事,但不是很优雅)。

有没有更好的方法?

PS我试过了

if (!this.DesignMode)
{
    this.Url = new Uri(System.IO.Path.GetFullPath(@"WebPage\leaflethtml.html"));
}

但它仍然在设计器中执行:(

您可以将 html 和 JavaScript 文件指定为嵌入资源。这可以通过在 Visual Studio.

的文件属性对话框中更改构建操作来完成

然后可以使用反射加载文件,例如:

var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("namespace.filename.extension");