2012-04-14 4 views
0

Bitte ich brauche Hilfe für den Code unter "if (webBrowser1.DocumentCompleted);"Ich brauche Hilfe auf ---> If-Anweisung: Nachdem die Seite geladen, dann tun Sie dies

Dies ist die Veranstaltung, die ich passieren soll, nachdem ich auf die Schaltfläche klicken: 1.) abrufen Webseite 2.) Wenn die Seite geladen getan wird, dann das Attribut Formular

ich auf Platz 2 steckte. Wie kann ein „IF“ Aussage machen, die

mit der Seite zu tun hat
private void button1_Click(object sender, EventArgs e) 
{ 
webBrowser1.Navigate("costco.com/Common/Login.aspx?cm_re=1_en-_-Top_Right_Nav-_-Top_login&topnav=&whse=BC&lang=en-US") 


    if (webBrowser1.DocumentCompleted); 
    webBrowser1.Document.GetElementById("_ctl0_EmailAddress").SetAttribute("value", "RogerWilliams"); 

}

Es gibt einen Fehler mit nach dem Laden „if (webBrowser1.DocumentCompleted);“

+3

Willkommen bei Stackoverflow. Wenn Sie "Es gibt einen Fehler" sagen, sollten Sie als Nächstes erklären, was der Fehler ist, einschließlich der * genauen * Fehlermeldung, die Sie erhalten. Bitte bearbeiten Sie Ihre Frage, um sie anzugeben, und denken Sie daran, wenn wir das tun, können wir Ihren Bildschirm von hier aus nicht sehen - wir haben nur das, was Sie uns in Ihrer Frage mitteilen, um es zu versuchen und Ihnen zu helfen. Wenn Sie eine bessere Frage stellen, haben Sie eine bessere Chance, eine Antwort zu bekommen. :) –

Antwort

-1

Lassen Sie sich am Ende der if Anweisung des zusätzlichen Semikolon los:

if (webBrowser1.DocumentCompleted) 
    webBrowser1.Document.GetElementById("_ctl0_EmailAddress").SetAttribute("value", "RogerWilliams"); 
+1

Das Semikolon ist nur ein Tippfehler. Das eigentliche Problem ist in meiner Antwort beschrieben. –

+0

Vielleicht ist es ein Tippfehler, aber es ist definitiv einer der Fehler im Code. – Bernard

1

DocumentCompleted ist kein boolean Eigenschaft, es ist ein Ereignis, das asynchron auftreten. Sie sollten einen Rückruf erstellen, der nach dem Absetzen des Ereignisses aufgerufen wird.

private void button1_Click(object sender, EventArgs e) 
{ 
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(OnDocumentCompleted); 
    webBrowser1.Navigate("costco.com/Common/Login.aspx?cm_re=1_en-_-Top_Right_Nav-_-Top_login&topnav=&whse=BC&lang=en-US"); 
} 

private void OnDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    ((WebBrowser)sender).Document.GetElementById("_ctl0_EmailAddress").SetAttribute("value", "RogerWilliams"); 
} 
+0

@Barry bitte verwenden Sie stattdessen meine Lösung. Ihre Lösung funktioniert zwar, beansprucht aber in diesem "While" -Zyklus CPU. Meine Lösung funktioniert auch, aber es ist ereignisbasiert, was der Standard und bevorzugte Weg ist. –

0

Sie könnten auch dies wie so in jquery mit Ajax tun:

$('#yourlink').click(function() { 
    $.ajax({ 
     url: 'costco.com/Common/Login.aspx?cm_re=1_en-_-Top_Right_Nav-_-Top_login&topnav=&whse=BC&lang=en-US', 
     success: function(data) { 
     $('#_ctl0_EmailAddress').val('RogerWilliams'); 
     } 
    }); 
    }); 
0

Shedal Antwort richtig ist. DocumentCompleted ist ein Ereignishandler und wird aufgerufen, wenn der Browser das Dokument vollständig geladen hat. Wenn Sie jedoch explizit den aktuellen Status des Dokuments abrufen müssen, können Sie den WebBrowser.ReadyState verwenden und prüfen, ob das Dokument geladen ist oder nicht. Hier ist der Link zu unterschiedlichen Eigenschaften Readystate:

http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowserreadystate.aspx

Verwandte Themen