在我的 Windows 窗体应用程序中,我有一个简单的 Web 浏览器,它应该运行 .html
包含 css
的文件风格的登记表。使用 webBrowser1.Navigate("http://www.example.com/mypage.html");
远程加载页面时运行良好;但是,当我尝试嵌入 .html
文件 [连同 css
通过设置 Building Action
在资源中需要文件]至 Embedded Resource
, 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" />
我如何获得 .html
来自 Embedded Resources
的文件:
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
其中引用的文件;因此,有关如何嵌入 .html
的任何详细答案使用 js, css
的文件Windows 窗体中的外部文件以及如何将其加载到 webBrowser
将非常感激。我希望我能清楚地表达我的问题,并提前致谢。
最佳答案
问题很可能是因为其他文件仍嵌入到您的应用程序中。浏览器将在哪里找到它们?
您可以将所有需要的嵌入文件写入临时目录,并让您的网络浏览器从那里加载 .html 页面。加载 html 页面后,它应该能够找到您的其他资源,因为它们将位于同一目录(或您创建的任何结构)中。
基本上我是说您可以将所有文件提取到一个临时目录结构中,例如:
C:\mytempsite\mypage.html
C:\mytempsite\lang\en\compact.css
C:\mytempsite\lang\en\lang.css
C:\mytempsite\img\basics.css
然后您可以将网络浏览器设置为navigate到“C:\mytempsite\mypage.html”
只要您可以在没有您的应用程序的情况下直接导航到此页面,并且页面加载正确,那么当它导航到那里时,您的应用程序应该可以正常工作。只需确保 mypage.html 具有格式正确的 html 并且是一个完整的页面。
关于c# - 加载 .html,带有 css 引用,文件嵌入在资源中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16040398/