.Net WebBrowser.DocumentText не меняется!

голоса
35

В моей vb.net программе, я использую WebBrowser, чтобы показать пользователю HTML превью. Я ранее был ударять сервер, чтобы захватить HTML, а затем возвращается на асинхронных потоках и повышение события для заполнения WebBrowser.DocumentText с HTML строкой я возвращался.

Теперь я поставил его, чтобы захватить всю информацию о клиенте, без необходимости ударить сервер, и я пытаюсь поднять то же событие. Я смотрю код пройти, и он имеет HTML строку правильно и все, но когда я пытаюсь сделать

browser.DocumentText = _emailHTML

содержание DocumentText остаются « <HTML></HTML>»

Мне было просто интересно, почему DocumentText не быть установлена. Кто-нибудь есть какие-либо предложения?

Задан 06/10/2008 в 15:01
источник пользователем
На других языках...                            


9 ответов

голоса
49

Попробуйте следующее:

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

Я обнаружил , что WebBrowserконтроль , как правило , должен быть инициализирован в about:blankлюбом случае. То же самое должно быть сделано между Переходит к различным типам контента (например , текст / XML в текст / HTML) , так как визуализатор отличается (MSHTML для текста / html, что - то другое для текста / XML).

(через http://geekswithblogs.net/paulwhitblog/archive/2005/12/12/62961.aspx )

Ответил 06/10/2008 в 15:25
источник пользователем

голоса
31

Я нашел следующее, и это сработало!

    webBrowser.Navigate("about:blank");
    webBrowser.Document.OpenNew(false);
    webBrowser.Document.Write(html);
    webBrowser.Refresh();
Ответил 04/03/2013 в 20:48
источник пользователем

голоса
8

Я нашел лучший способ справиться с этим, заключается в следующем:

if (this.webBrowser1.Document == null)
{
    this.webBrowser1.DocumentText = htmlSource;
}
else
{
    this.webBrowser1.Document.OpenNew(true);
    this.webBrowser1.Document.Write(htmlSource);
}
Ответил 23/07/2013 в 13:01
источник пользователем

голоса
1

Это работает для меня:

webBrowser.Navigate("about:blank");
webBrowser.Document?.Write(htmlString);
Ответил 25/10/2016 в 21:52
источник пользователем

голоса
1

Просто заметил это в некоторых из нашего старого кода.

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

Application.DoEvents();

По-видимому, DoEvents также пинает браузер в оказании

Ответил 19/10/2010 в 04:42
источник пользователем

голоса
0

Убедитесь , что вы не отмените ходовом событие WebBrowser для о: пустой странице. WebBrowser переходит к о: пустой перед установкой DocumentText . Так что если вы хотите обрабатывать ссылки от себя , вы должны создать следующий обработчиком Navigating события:

private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
    if(e.Url.OriginalString.StartsWith("about:"))
    {
        return;
    }
    e.Cancel = true;
    // ...
}
Ответил 23/04/2013 в 10:08
источник пользователем

голоса
0

Это всегда работает

using mshtml;


private IHTMLDocument2 Document
{
    get
    {
        if (Browser.Document != null)
        {
            return Browser.Document.DomDocument as IHTMLDocument2;
        }

        return null;
    }
}


if (Document == null)
{
    Browser.DocumentText = Contents;
}
else
{
    Document.body.innerHTML = Contents;
}
Ответил 01/11/2011 в 09:21
источник пользователем

голоса
0

В то время как Application.DoEvents()это исправить в проекте WinForms, это не имеет никакого значения в проекте WPF.

Я , наконец , получил его на работу, используя webBrowser.Write( htmlContent )(вместо webBrowser.DocumentText = htmlContent).

Ответил 14/09/2011 в 15:56
источник пользователем

голоса
0

пожалуйста , обратитесь к этому ответ с # FileNotFoundException на веб - браузера?

Ответил 19/01/2011 в 18:21
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more