2016-05-09 3 views
3

Ich verwende den folgenden Code. Ich möchte zu einer Webseite navigieren und dann auf eine Schaltfläche im C# -Webbrowser-Steuerelement klicken. Bevor ich jedoch zu der Webseite navigieren kann, wird der Klick aufgerufen, was eine Null-Ausnahme verursacht.Zweite Codezeile wird vor der ersten ausgeführt C#

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

Jede Hilfe wäre willkommen.

+4

Nachdem ich das Webbrowser-Tool in C# noch nie benutzt habe, wette ich, dass 'Navigate' nicht blockierend ist. Sie möchten wahrscheinlich nach einem Ereignis oder etwas suchen, das "OnLoad" ähnlich ist, und Ihre Logik aufgerufen haben, nachdem die Seite geladen wurde. – Rob

Antwort

11

Die erste Zeile wird ausgeführt, beendet jedoch nicht das Laden der Seite, bevor der Rest des Codes ausgeführt wird.

Tun Sie etwas mehr wie:

webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 

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

Dadurch wird Ihr Code aus einem Ereignis ausgelöst, sobald die Seite fertig geladen.

+0

Gibt es einen anderen Weg? Weil ich eine Timer-Bedingung verwende, um zu sehen, ob der Timer morgens oder abends ist. Abhängig von der Zeit unterscheidet sich die Webseite, zu der ich navigiere. – CyraX6

+1

@ CyraX6 Sie können nur einige Bedingungen im Event-Handler überprüfen? – Adrian

Verwandte Themen