Dies würde wahrscheinlich passieren, wenn die Seite Javascript oder %code% verwendet, um auf eine andere Seite umzuleiten.
Wenn ja, gibt es keine gute Problemumgehung.
___ qstntxt ___
Ich habe dieses Thema recherchiert und alle scheinen zuzustimmen, dass die Lösung darin besteht, das %code% des Webbrowsers zu überprüfen, bis die Einstellung abgeschlossen ist.
Aber tatsächlich wird das Ereignis manchmal mit dem %code% ausgelöst, das mehrmals auf Complete gesetzt wurde.
Ich glaube nicht, dass es eine Lösung mit diesem fehlerhaften .NET Webbrowser gibt, aber es könnte einen geben, wenn ich die zugrunde liegende DOM-Komponente verwende.
Das einzige Problem ist, ich habe keine Ahnung, wie ich auf die DOM-Komponente hinter dem WebBrowser zugreifen kann, die das DocumentCompleted-Ereignis auslöst.
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert.
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden.
___ answer38057856 ___
Ich kann nichts finden, was 100% Sicherheit gibt.
Das erwähnte Beispiel (e.Url.Equals (webBrowser1.Url)) funktioniert möglicherweise für einen einfachen WebBrowser.Navigate (url), aber in meinem Fall klicke ich auf Knoten im Code, um neue Rahmen in bestehenden Rahmen zu öffnen. Meistens ist die Anzahl der Male "Navigating" und "DocumentCompleted" gleich, aber auch nicht immer. "isBusy = false" und "ReadyState = Complete" wird immer der Fall sein, wenn es fertig ist (zumindest bis jetzt), aber es wird auch einige Male diesen Zustand haben, wenn es noch lädt. Das Zählen von Frames erscheint mir auch nutzlos, in einem Fall wird DocumentCompleted 23-mal ausgelöst, jedoch sind alle Frames und Sub-Sub-Sub-Frames 14 insgesamt.
Das Einzige, was zu funktionieren scheint, ist eine kurze Zeit (1 oder 2 Sekunden?) abzuwarten, um zu sehen, ob etwas passiert (irgendwelche Ereignisse ausgelöst, irgendwelche Statusänderungen).
Hmm, ich habe eine andere Lösung für mich gefunden. Oft sind wir nicht daran interessiert, die ganze Seite zu laden, oft wollen wir, dass bestimmte Elemente existieren. Also nach jedem DocumentCompleted und wenn "isBusy = false" und "ReadyState = Complete" können wir das DOM durchsuchen, wenn dieses Element existiert.
___