У меня есть проект, над которым я работаю в VS2005. Я добавил элемент управления WebBrowser. Я добавляю базовую пустую страницу в элемент управления
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);
}
}
, а затем добавьте различные элементы через dom (используя _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, пока все мои элементы не были добавлены, но результаты не изменились.