我有一個項目,我正在VS2005中工作。我已經添加了WebBrowser控件。我通過DOM一個基本空的頁添加到控制C#WebBrowser控件不能應用css
private const string _basicHtmlForm = "<html> "
+ "<head> "
+ "<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/> "
+ "<title>Test document</title> "
+ "<script type='text/javascript'> "
+ "function ShowAlert(message) { "
+ " alert(message); "
+ "} "
+ "</script> "
+ "</head> "
+ "<body><div id='mainDiv'> "
+ "</div></body> "
+ "</html> ";
private string _defaultFont = "font-family: Arial; font-size:10pt;";
private void LoadWebForm()
{
try
{
_webBrowser.DocumentText = _basicHtmlForm;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
,然後添加各種元件(使用_webBrowser.Document.CreateElement)。我也加載CSS文件:
private void AddStyles()
{
try
{
mshtml.HTMLDocument currentDocument = (mshtml.HTMLDocument) _webBrowser.Document.DomDocument;
mshtml.IHTMLStyleSheet styleSheet = currentDocument.createStyleSheet("", 0);
TextReader reader = new StreamReader(Path.Combine(Path.GetDirectoryName(Application.ExecutablePath),"basic.css"));
string style = reader.ReadToEnd();
styleSheet.cssText = style;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
這裏是CSS頁面內容:
body {
background-color: #DDDDDD;
}
.categoryDiv {
background-color: #999999;
}
.categoryTable {
width:599px; background-color:#BBBBBB;
}
#mainDiv {
overflow:auto; width:600px;
}
風格頁面加載成功,但也受到了影響頁面上的唯一因素是那些最初在頁面中(body和mainDiv)。我也嘗試在標題部分的元素中包含css,但它仍然隻影響創建頁面時存在的元素。
所以我的問題是,有沒有人有任何想法,爲什麼css沒有被應用到頁面加載後創建的元素?在添加了所有元素之後,我也嘗試不應用CSS,但結果不會改變。
我想知道的一樣。我一直認爲以這種方式創建網頁只是創建了一個陳舊/死/靜態頁面,並且呈現引擎停止檢查樣式,除非頁面中的元素導致呈現器「喚醒」。但即時通訊會讓你感到無聊。 我剛剛學會在最初創建文檔時將CSS作爲頭部的第一件事。 – 2010-04-01 18:16:10
我知道這可能根本沒有幫助(這就是爲什麼它是一個評論),但我想從經驗告訴你,C#的WebBrowser組件是垃圾。看起來微不足道的事情往往最終會成爲頭痛的事情,而當它沒有做到你想做的事情時,你最終不得不去做底層的ActiveX組件......至少可以說是一團糟(〜5個不同的接口完全不同無組織的,具有任意組合的功能)。 我強烈建議儘可能使用不同的瀏覽器組件,例如基於Firefox引擎的GeckoFX。 – Teekin 2010-06-17 15:54:04
這裏缺少一條關鍵信息:你正在創建的元素,那些沒有得到風格的元素。據推測,你將class屬性設置爲'「categoryDiv」','「categoryTable」'等等......但是,你的問題沒有明確說明。鑑於你所描述的結果,我更傾向於認爲元素創建中存在一個缺陷,而不是直接與樣式表創建相關的任何錯誤。話雖如此,你會意識到你迫使新樣式表成爲文檔中的第一個(因此也是最低優先級),對吧? – Shog9 2010-06-19 04:30:10