使WebBrowser控件在DocumentText中使用链接样式表

时间:2009-10-18 14:51:01

标签: c# css browser

我正在使用WebBrowser控件并显示文本,但它没有使用链接的CSS,它只显示为纯文本。 我正在填充它

webBrowser1.DocumentText = some_text;

在some_text中<link rel="stylesheet"href="PF.css">以及html的其余部分

当我将some_text保存到文件并让WebBrowser导航到它时,它可以正常工作 webBrowser1.Navigate(@"C:\test.html");和PF.css位于C:\

我把PF.css放在我的项目文件夹中,其中所有的类文件都是。

如何让WebBrowser控件使用/显示我链接的css文件? 我不想将我的字符串保存到文件然后导航到它。

感谢

3 个答案:

答案 0 :(得分:1)

mshtml.HTMLDocument CurrentDocument = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
 mshtml.IHTMLStyleSheet styleSheet = CurrentDocument.createStyleSheet("", 0);
 StreamReader streamReader = new StreamReader(@"C:\PF.css");
 string text = streamReader.ReadToEnd();
 streamReader.Close();
 styleSheet.cssText = text;

一种krapy方式来做到这一点,但我读到的所有内容似乎都指向webbrowser控件无法执行css,除非你导航到一个文件/ url并且它包含在那里。 顺便说一句,你必须添加一个参考Microsoft.mshtml。

也许此控件的未来版本可以处理链接的样式表...

答案 1 :(得分:0)

您可以将内联样式用作..

<html>
   <head>
       <style>
           // all my style here
       </style>
   </head>
<body>
..
..
</body>
</html>

答案 2 :(得分:0)

如果将它放在项目文件夹中,是指您的bin文件夹,还是包含.sln文件的文件夹?如果是后者,则必须将其放在与可执行文件相同的文件夹中(例如bin/Debug/PF.cssbin/Release/PF.css等)。

或者,您可以使用<style type="text/css"><!-- CSS Here --></style>将其嵌入HTML中,并将评论替换为CSS。如果您不想在some_text的任何地方对其进行硬编码,则可以通过加载PF.css来动态替换它:

using (StreamReader sr = new StreamReader("PF.css"))
{
    some_text = String.Format(some_text, sr.ReadToEnd());
}

该示例假设some_text包含以下内容:

<style type="text/css">
    {0}
</style>