目前正尝试使用IHTMLStyleSheet
在WebBrowser控件中注入CSSHow to inject CSS in WebBrowser control?
我读过这篇文章,我觉得它有点帮助,但对我来说似乎没什么用。
IHTMLDocument2 doc = (webBrowser1.Document.DomDocument) as IHTMLDocument2;
IHTMLStyleSheet ss = doc.createStyleSheet("", 0);
ss.addRule("body", "background-color:#000");
ss.cssText = @"h1 { color: blue; }";
这就是我目前所拥有的,在此之后我需要将它添加到控件中吗?或者我在这里做错了什么?
编辑: 在这里工作了我做的事情
CurrentDocument = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
styleSheet = CurrentDocument.createStyleSheet("", 0);
StreamReader streamReader = new StreamReader(@"test.css"); //test.css is Stylesheet file
string text = streamReader.ReadToEnd();
streamReader.Close();
styleSheet.cssText = text;
答案 0 :(得分:2)
我做了什么才能让它发挥作用
CurrentDocument = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
styleSheet = CurrentDocument.createStyleSheet("", 0);
StreamReader streamReader = new StreamReader(@"test.css"); //test.css is Stylesheet file
string text = streamReader.ReadToEnd();
streamReader.Close();
styleSheet.cssText = text;
答案 1 :(得分:0)
我觉得你正在努力做到这一点。
为什么不使用内置的winforms方式代替COM-Interop?
最简单的方法是简单地将css文件加载到内存中,并将其附加到Web浏览器文档的Style元素中。或者,如果您只想更改一个特定元素,请使用Style属性
<强> C#强>
using System.Windows.Forms;
namespace stackoverflow
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
webBrowser1.Navigate("http://www.google.com");
webBrowser1.DocumentCompleted += WebBrowser1_DocumentCompleted;
}
private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var FeelingLucky= webBrowser1.Document.GetElementById("gbqfbb");
FeelingLucky.Style = "font-size: 40px;";
var path = System.IO.Path.Combine(System.Environment.CurrentDirectory, "Stylesheet1.css");
var StylesheetContent = System.IO.File.ReadAllText(path);
var style= webBrowser1.Document.GetElementsByTagName("style")[0];
style.InnerText = style.InnerText + " " + StylesheetContent;
}
}
}
CSS文件
#lga {background-color: red;}
查看Style
上的MSDN文档