42 votes

.Net WebBrowser.DocumentText ne change pas!

Dans mon vb.net programme, je suis à l'aide d'un navigateur web pour afficher à l'utilisateur un aperçu HTML. J'étais auparavant frapper un serveur saisissez le code HTML, puis en la retournant sur un thread asynchrone et déclenchant un événement pour remplir le WebBrowser.DocumentText avec la chaîne HTML, j'étais de retour.

Maintenant je l'ai mis en place pour récupérer toutes les informations des clients, sans avoir jamais frappé le serveur, et j'essaie de faire le même événement. J'ai regarder le code d'aller à travers, et il a la chaîne HTML correct et tout et tout, mais quand j'essaie de faire

browser.DocumentText = _emailHTML

le contenu de DocumentText rester "<HTML></HTML>"

Je me demandais juste pourquoi le DocumentText n'a pas été définie. Quelqu'un a des suggestions?

57voto

David Mohundro Points 5158

Essayez les solutions suivantes:

browser.Navigate("about:blank")
HtmlDocument doc = this.webBrowser1.Document
doc.Write(String.Empty)
browser.DocumentText = _emailHTML

J'ai trouvé que le contrôle WebBrowser généralement besoin d'être initialisé à propos:vide de toute façon. La même chose doit être fait entre navigue sur différents types de contenu (tels que text/xml texte/html) parce que le rendu est différent (mshtml pour text/html, quelque chose d'autre pour text/xml).

(via http://geekswithblogs.net/paulwhitblog/archive/2005/12/12/62961.aspx)

37voto

Matthias Points 91

J'ai trouvé ce qui suit et cela a fonctionné!

     webBrowser.Navigate("about:blank");
    webBrowser.Document.OpenNew(false);
    webBrowser.Document.Write(html);
    webBrowser.Refresh();
 

11voto

FreddieH Points 306

J'ai trouvé que la meilleure façon de gérer cela est la suivante:

 if (this.webBrowser1.Document == null)
{
    this.webBrowser1.DocumentText = htmlSource;
}
else
{
    this.webBrowser1.Document.OpenNew(true);
    this.webBrowser1.Document.Write(htmlSource);
}
 

1voto

johnc Points 12140

Je viens de repérer cela dans certains de nos anciens codes.

 _webBrowser.DocumentText = builder.WriteToString( ... );

Application.DoEvents();
 

Apparemment, un DoEvents lance également le navigateur dans le rendu

0voto

JOE SKEET Points 1663

veuillez vous référer à cette réponse c # filenotfoundexception on webbrowser ??????

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X