2016-05-09 9 views
3

次のコードを使用しています。 Webページに移動し、C#Webブラウザコントロールのボタンをクリックします。しかし、Webページに移動する前でも、クリックが呼び出され、null例外が発生します。コードの2行目が最初のコードの前に実行されます。C#

webBrowser1.Navigate("www.remaxit.com/members"); // way before this 
deleted = true; 
HtmlDocument doc = this.webBrowser1.Document; 
doc.GetElementById("AddUser").InvokeMember("CLICK"); //This executes 

助けてください。

+4

C#でWebブラウザツールを使用したことがない人は、Navigateが非ブロックであると賭けています。 'OnLoad'と同様のイベントや何かを探して、ページがロードされた後にロジックを呼び出さなければならないでしょう。 – Rob

答えて

11

最初の行は実行されますが、残りのコードが実行される前にページのロードが完了しません。ページの読み込みが完了すると、このイベントを離れてあなたのコードを発生させます

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    HtmlDocument doc = this.webBrowser1.Document; 
    doc.GetElementById("AddUser").InvokeMember("CLICK"); 
} 

は、より多くのような何かを行います。

+0

他の方法はありますか?私はタイマーが朝か夕方かどうかを確認するためにタイマー条件を使用しているからです。時間に応じて、私がナビゲートするウェブページは異なるでしょう。 – CyraX6

+1

@ CyraX6イベントハンドラのいくつかの条件をチェックするだけでいいですか? – Adrian

関連する問題