C# contrôle WebBrowser ne pas appliquer la css

J'ai un projet que je suis en train de travailler avec VS2005. J'ai ajouté un contrôle WebBrowser. J'ajoute un page vide pour le contrôle

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);
    }
}  

puis ajouter différents éléments via les dom (à l'aide de _webBrowser.Document.CreateElement). Je suis également le chargement d'un fichier 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);
    }
}

Voici le css de la page table des matières:

body {
    background-color: #DDDDDD;
}

.categoryDiv {
    background-color: #999999;
}

.categoryTable {
    width:599px; background-color:#BBBBBB;
}

#mainDiv {
    overflow:auto; width:600px;
}

Le style de la page de chargement avec succès, mais les seuls éléments de la page qui sont touchés sont ceux qui sont initialement dans la page (corps et mainDiv). J'ai aussi essayé d'inclure le css dans un élément dans la section d'en-tête, mais encore, elle affecte uniquement les éléments qui sont là quand la page est créée.

Donc ma question est, quelqu'un a une idée sur le pourquoi de la css n'est pas appliqué à des éléments qui sont créés après le chargement de la page? J'ai également essayé le pas de l'application de la css jusqu'à ce que après tous mes éléments sont ajoutés, mais les résultats ne changent pas.

Ive a demandé la même chose. J'ai toujours supposé que la création d'une page web en la manière qui vient d'être créé un rassis/morts/page statique, et que le moteur de rendu cessé de vérification de styles à moins qu'un élément dans la page, les causes, le moteur de rendu "réveil". Mais im tirer que hors de l'air mince. J'ai juste appris à ajouter le CSS que la première chose à la tête lors de la création d'un doc.
Je sais que c'est probablement ce qui n'aide pas du tout (c'est pourquoi c'est un commentaire), mais je voulais vous dire par expérience que C#'s composant WebBrowser est indésirable. Apparemment trivial, les choses ont tendance à finir comme massive des maux de tête et quand il n'est pas de faire ce que vous voulez, vous finissent souvent par avoir à passer par les sous-jacents composant ActiveX... ce qui est un gâchis pour dire le moins (~5 différentes interfaces totalement désorganisés, ayant arbitraire ensembles de fonctionnalités). Je recommande fortement un autre composant de navigateur chaque fois que possible, par exemple GeckoFX, basé sur le moteur de Firefox.
Il y a une part de l'information qui manque ici: les éléments que vous êtes en train de créer, ceux qui ne sont pas de style. Sans doute, la configuration de l'attribut de classe de "categoryDiv", "categoryTable", etc... Mais, ce n'est pas explicitement mentionné dans votre question. Étant donné les résultats que vous décrivez, je suis beaucoup plus enclins à penser qu'il y a un bug dans ton élément de la création de tout ce qui est directement connecté à votre feuille de style de création. Cela étant dit, vous ne réalisez que vous êtes forçant la nouvelle feuille de style pour être le premier dans le document (et donc moins prioritaire), à droite?
Je soupçonne que vous êtes en droit. J'ai créé une version d'essai de James projet et j'obtiens les styles appliqués à de nouveaux éléments de l'affaire (donné quelques petits mods).
heh, j'ai fait de même, avec les mêmes résultats. Bon travail sur la réponse!

OriginalL'auteur JamesL | 2010-04-01