2015-12-24 1 views
0

В конструкторе:Почему при переходе на сайт с помощью webbBrowser я все время получаю исключение?

webBrowser2.Navigate("http://www.tapuz.co.il/forums/forumpage/393"); 

Тогда в DocumentCompleted:

void webBrowser2_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      HtmlElementCollection items = this.webBrowser1.Document.GetElementsByTagName("span"); 
      foreach (HtmlElement item in items) 
      { 
       if (item.GetAttribute("className") == "addMessage") 
       { 
        item.InvokeMember("click"); 
        break; 
       } 
      } 
     } 

Я получаю на

HtmlElementCollection items = this.webBrowser1.Document.GetElementsByTagName("span"); 

Null исключение.

Я пытался добавить до этой линии цикл:

while (webBrowser2.ReadyState != WebBrowserReadyState.Complete) 
      { 
       return; 
      } 

Но это ничего не делать, когда страница загружена. Это не доходит до следующих строк. Я только что просмотрел загрузку страницы в webBrowser.

+4

Вы получаете исключение для ссылочной ссылки, потому что 'this.webBrowser1.Document' равно null. Потому что вы перешли в 'webBrowser2'. Также при использовании события 'DocumentCompleted' вам не нужен такой цикл while. –

+3

NRE - это то, что каждый разработчик поражает в какой-то момент. Лучшее, что вы можете сделать, чтобы вооружить себя, - это научиться отлаживать - [этот вопрос] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i- fix-it) переводит его в более общем смысле. –

+1

[Что такое исключение NullReferenceException и как его исправить?] (Http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) –

ответ

1

Вы получаете исключение для ссылки на null, потому что this.webBrowser1.Document имеет значение null.

Document property of WebBrowser есть null перед тем, как навигация.

Вы перешли в webBrowser2 и ваш webBrowser1.Document по-прежнему не имеет значения.