在 WebBrowser 控件中注入 CSS

Injecting CSS in WebBrowser Control

目前正在尝试使用 IHTMLStyleSheet

在 WebBrowser 控件中注入 CSS

How 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;

我觉得你在努力做到这一点。

为什么不使用内置的 winforms 方式来代替 COM-Interop?

最简单的方法是简单地将 css 文件加载到内存中,并将其字符串附加到 Web 浏览器文档的 Style 元素中。或者,如果您只想更改一个特定元素,请使用 Style 属性

C#

using System.Windows.Forms;
namespace Whosebug
{
    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;}

这里是google经过上面的修改:

查看 Style

上的 MSDN 文档

我做了什么让它工作

        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;