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

时间:2016-01-25 10:07:10

标签: c# controls

我想创建一个控件,它充当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并返回错误消息(它不是主要内容,但它不是很优雅)。

有更好的方法吗?

PS我试过

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

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

1 个答案:

答案 0 :(得分:1)

您可以将html和JavaScript文件指定为嵌入资源。这可以通过在Visual Studio中的“文件属性”对话框中更改“构建操作”来完成。

enter image description here

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

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