Почему WebBrowser_DocumentCompleted () стреляющий дважды?

Ну, я использую простое управление webbrowser для просмотра к странице, таким образом, я должен изменить текст формы при выполнении так. Я использую -

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
     this.Text += " - " + webBrowser1.Document.Domain;
}

но с помощью точки останова, я заметил, что, это событие стреляет дважды. Я даже попробовал _Navigated() событие. это также стреляло дважды. Заканчиваясь заголовок к "Webber - google.co.in - google.co.in" ..

Я также заметил что это событие, запускаемое несколько раз при загрузке msn.com.. Я пытаюсь изменить текст формы только, когда страница закончила загружаться полностью..

Какое-либо средство?

17
задан Paul Fleming 18 October 2012 в 20:26
поделиться

5 ответов

Вы можете проверить WebBrowser.ReadyState при срабатывании события:

if (browser.ReadyState != WebBrowserReadyState.Complete)
    return;

ReadyState будет установлено на Complete, когда весь документ будет готов.

26
ответ дан 30 November 2019 в 10:31
поделиться

Каждый раз, когда загружается кадр, запускается событие.

Также, пока вы еще не дошли до этого, свойство IsBusy будет True только тогда, когда первый кадр еще не загрузился.

void BrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
  if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
    return; 

  //The page is finished loading 
}
17
ответ дан 30 November 2019 в 10:31
поделиться

Он запускается один раз за кадр.

3
ответ дан 30 November 2019 в 10:31
поделиться

How To Determine When a Page Is Done Loading in WebBrowser Control DocumentCompleted является оберткой WinForms для DocumentComplete evert, однако WebBrowserDocumentCompletedEventArgs скрывает параметр sender, поэтому вы не можете определить, какой фрейм вызывает событие. В качестве альтернативы вы можете проверить WebBrowser.ReadyState.

0
ответ дан 30 November 2019 в 10:31
поделиться

На самом деле, его не всегда увольняют. Не понял, почему бы и нет. У меня есть таймер, и я просто проверяю ReadyState несколько раз в течение нескольких минут. (С помощью встроенного управления браузером).

0
ответ дан 30 November 2019 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: