.Net WebBrowser.DocumentText没有改变!

Joe*_*gan 40 .net html browser

在我的vb.net程序中,我使用webbrowser向用户显示HTML预览.我以前在服务器上抓取HTML,然后返回异步线程并引发事件以使用我返回的HTML字符串填充WebBrowser.DocumentText.

现在我将其设置为获取客户端上的所有信息,而不必访问服务器,我正在尝试提升相同的事件.我看着代码经过,它有正确的HTML字符串和一切,但当我尝试做

browser.DocumentText = _emailHTML
Run Code Online (Sandbox Code Playgroud)

DocumentText的内容仍为" <HTML></HTML>"

我只是想知道为什么没有设置DocumentText.有人有什么建议吗?

Dav*_*dro 55

请尝试以下方法:

browser.Navigate("about:blank");
HtmlDocument doc = browser.Document;
doc.Write(String.Empty);
browser.DocumentText = _emailHTML;
Run Code Online (Sandbox Code Playgroud)

我发现WebBrowser控件通常需要初始化为about:blank.导航到不同类型的内容(例如text/xml到text/html)之间也需要做同样的事情,因为渲染器是不同的(mshtml用于text/html,其他用于text/xml).

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

  • 我很感激帮助.事实证明我能够通过browser.Document.OpenNew(True)得到它.你是对的 - 我需要初始化它. (5认同)
  • 为什么doc.Write后跟DocumentText = ...?仅仅做一个浏览器就不够了.Document.Write(_emailHTML);? (2认同)

小智 34

我发现了以下内容并且有效!

    webBrowser.Navigate("about:blank");
    webBrowser.Document.OpenNew(false);
    webBrowser.Document.Write(html);
    webBrowser.Refresh();
Run Code Online (Sandbox Code Playgroud)

  • 这是为我工作的那个。我唯一缺少的是刷新。 (2认同)

小智 11

我找到了解决这个问题的最佳方法,如下:

if (this.webBrowser1.Document == null)
{
    this.webBrowser1.DocumentText = htmlSource;
}
else
{
    this.webBrowser1.Document.OpenNew(true);
    this.webBrowser1.Document.Write(htmlSource);
}
Run Code Online (Sandbox Code Playgroud)