加载.html,与css引用,文件嵌入在资源

本文关键字:文件 资源 引用 html css 加载 | 更新日期: 2023-09-27 18:09:33

在我的windows窗体应用程序中,我有一个简单的web浏览器,它应该运行一个包含css样式注册表单的.html文件。当使用webBrowser1.Navigate("http://www.example.com/mypage.html");远程加载页面时,它运行得很好;然而,当我试图通过将Building Action设置为Embedded Resource来嵌入.html文件[以及所需的css文件]时,webBrowser只导航到.html文件,而不检测css文件,这导致令人毛骨悚然的页面外观。

这是我目前为止试过的代码。

.html文件:

  <link href="lang/en/compact.css" rel="stylesheet" type="text/css" />
  <link href="lang/en/lang.css" rel="stylesheet" type="text/css" />
  <link href="img/basics.css" rel="stylesheet" type="text/css" />

如何从Embedded Resources中获取.html文件:

using (Stream stream = Assembly.GetExecutingAssembly()
                   .GetManifestResourceStream("DummyBrowserFormImprovements.HTML." + "mypage.html"))
    if (stream != null)
        using (var reader = new StreamReader(stream))
        {
            string result = reader.ReadToEnd();
            dummyBrowser1.DocumentText = result;
        }

不幸的是,上述方法只加载.html文件,而不识别其中引用的css文件;因此,任何关于如何在windows窗体中嵌入使用js, css外部文件的.html文件以及如何将其加载到webBrowser中的详细答案都将非常欣赏。我希望我清楚地表达了我的问题,并提前表示感谢。

加载.html,与css引用,文件嵌入在资源

这个问题很可能是因为其他文件仍然嵌入到您的应用程序中。浏览器将在哪里找到它们?

你可以将所有需要的嵌入文件写入临时目录,并让你的web浏览器从那里加载。html页面。一旦html页面被加载,它应该能够找到你的其他资源,因为它们将在相同的目录(或任何你做的结构)。

基本上我是说你可以把你所有的文件解压到一个临时目录结构中,比如:

C:'mytempsite'mypage.html
C:'mytempsite'lang'en'compact.css
C:'mytempsite'lang'en'lang.css
C:'mytempsite'img'basics.css

然后你可以设置浏览器导航到"C:'mytempsite'mypage.html"

只要你可以直接导航到这里,而不需要你的应用程序,并且页面加载正确,那么当你的应用程序导航到那里时,这应该可以工作。只要确保mypage.html格式良好,并且是一个完整的页面。