Ну, я использую простое управление webbrowser для просмотра к странице, таким образом, я должен изменить текст формы при выполнении так. Я использую -
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.Text += " - " + webBrowser1.Document.Domain;
}
но с помощью точки останова, я заметил, что, это событие стреляет дважды. Я даже попробовал _Navigated()
событие. это также стреляло дважды. Заканчиваясь заголовок к "Webber - google.co.in - google.co.in"
..
Я также заметил что это событие, запускаемое несколько раз при загрузке msn.com.. Я пытаюсь изменить текст формы только, когда страница закончила загружаться полностью..
Какое-либо средство?
Вы можете проверить WebBrowser.ReadyState при срабатывании события:
if (browser.ReadyState != WebBrowserReadyState.Complete)
return;
ReadyState будет установлено на Complete, когда весь документ будет готов.
Каждый раз, когда загружается кадр, запускается событие.
Также, пока вы еще не дошли до этого, свойство IsBusy
будет True
только тогда, когда первый кадр еще не загрузился.
void BrowserDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (e.Url.AbsolutePath != (sender as WebBrowser).Url.AbsolutePath)
return;
//The page is finished loading
}
How To Determine When a Page Is Done Loading in WebBrowser Control
DocumentCompleted
является оберткой WinForms для DocumentComplete evert, однако WebBrowserDocumentCompletedEventArgs скрывает параметр sender, поэтому вы не можете определить, какой фрейм вызывает событие.
В качестве альтернативы вы можете проверить WebBrowser.ReadyState
.
На самом деле, его не всегда увольняют. Не понял, почему бы и нет. У меня есть таймер, и я просто проверяю ReadyState несколько раз в течение нескольких минут. (С помощью встроенного управления браузером).