2016-04-11 8 views
0

Ich möchte ein Ereignis DocumentCompleted zu meinem Steuerelement WebBrowser hinzufügen. Das ist mein Code. aber es funktioniert nicht.ein Ereignis hinzufügen DocumentCompleted zu einem WebBrowser in C#

 <asp:Button id="Button_Auth" Text="Authentification" OnClick="Authentification_Click" runat="server"/> 
 
     <asp:label id="Messages" runat="server"/>

 public void Authentification_Click(object sender, EventArgs e) 
    { 
     string input = "https://www.google.fr"; 
     runBrowserThread(input); 

     Messages.Text = "ok"; 
    } 



    private void runBrowserThread(String url) 
    { 
     var th = new Thread(() => { 
      var br = new WebBrowser(); 
      br.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(browser_DocumentCompleted); 
      br.Navigate(url,true); 
     }); 
     th.SetApartmentState(ApartmentState.STA); 
     th.Start(); 
    } 

    public void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     var br = sender as WebBrowser; 
     Messages.Text = e.Url.ToString(); 

    } 

Was ich will, ist offen eine neue Seite WebBrowser und jedes Mal, wenn die Seite (im Fall https://www.google.fr) fertig geladen, zum Beispiel Benutzer ein Schlüsselwort eingeben und suchen . Wenn die Ergebnisseite fertig geladen ist, erhalte ich die URL des Ergebnisses und zeige sie in meinem Label Nachrichten an.

Ich weiß nicht, warum mein Code nicht funktioniert.

Antwort

0

Überprüfen Sie, ob das Ereignis für Ihren Event-Handler richtig wahr ist.

Ist es eine asp.net-Anwendung oder ist es winforms-Anwendung oder wpf-Anwendung? In der asp.net-Anwendung ist dieses Ereignis nicht verfügbar. Wenn asp.net versuchen JavaScript

+0

Es ist eine Asp. NET-Webanwendung. Sie meinen, dass das Ereignis DocumentCompleted nur in Winforms-Anwendungen verwendet werden kann ... OK ... vielleicht stimmt das. Übrigens, können Sie ein Beispiel für JavaScript-Code dafür geben. Vielen Dank. – Stephane

+0

Sie können JavaScript jedoch nicht auf der Seite eines anderen Benutzers hinzufügen, in diesem Fall Google.fr, können Sie Ihre eigene Seite entwerfen und dann JavaScript hinzufügen, das beim Beenden des Vorgangs zum Laden der Dokumente ausgelöst wird. In jQuery ist es einfach zu tun, da es ein vorgefertigtes Event dafür gibt. Aber für das Szenario, das Sie erwähnen, sieht es so aus, als müssten Sie die Ergebnis-URL der Google-Suche erfassen. Ich denke, Sie müssen in Winforms-Richtung gehen. Sogar Ihr Code, der ein Webbrowser-Steuerelement in einer Thread-Art öffnet, funktioniert nur in einer Desktop-Anwendung, aber nicht in asp.net. – NatarajC

+0

Ok, ich sehe das. Das bedeutet, dass wir die URL in anderen Domain-Namen mit Javascript nicht erhalten können. Und wenn wir das mit C# machen wollen, muss das eine winform-Anwendung sein. Können wir in einer asp.net-Webanwendung andere Möglichkeiten haben, eine URL in einem Webbrowser zu erhalten, auch wenn sie nicht in meinem Domainnamen enthalten ist? Vielen Dank. – Stephane

Verwandte Themen