Pourquoi WebBrowser_DocumentCompleted () déclenche-t-il deux fois?
Bien, je suis à l'aide d'un simple contrôle webbrowser pour accéder à une page, donc j'ai besoin de changer le Texte de la forme en faisant de la sorte. Je suis aide -
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.Text += " - " + webBrowser1.Document.Domain;
}
mais à l'aide d'un point d'arrêt, j'ai remarqué que, cet événement se déclenche deux fois. J'ai même essayé de _Navigated()
événement. il a également tiré deux fois. Résultant le titre de "Webber - google.co.in - google.co.in"
..
J'ai aussi remarqué que cet événement a tiré à plusieurs reprises pendant le chargement msn.com.. je suis en train de modifier le texte de la forme seulement quand la page a fini de charger totalement..
N'importe quel remède?
source d'informationauteur Bibhas Debnath
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier le WebBrowser.ReadyState lorsque l'événement est déclenché:
ReadyState sera de Remplir une fois que le document est prêt.
Chaque fois qu'une image charges, l'événement est déclenché.
Aussi, avant même d'y aller, le
IsBusy
bien ne seraTrue
tandis que la première image n'a pas chargé.Essayer cette:
Il obtient déclenché une fois par image.
J'ai le même problème, et la raison était parce que, par défaut, lorsque vous ajoutez le contrôle génèrent de concepteur de ce type de code.
et si vous modifiez l'url après l'appel de
Il va charger deux pages différentes: about:Blank et NewUrl.com
Juste, supprimer le code du designer... et vous allez vous arrêter le "double" de l'événement.
Si tir deux fois, c'est un problème, alors cela devrait fonctionner:
Peut-être vous vous abonnez à cet événement plusieurs fois, comme dans votre méthode lors de votre navigation à l'URL à chaque fois que vous vous abonnez à cet événement.
Pour résoudre ce problème, déplacez la ligne de la méthode et de le mettre à un endroit où il ne sera appelée qu'une seule fois par exemple. Dans le constructeur de la classe peut-être... ce Qui devrait résoudre votre problème .
En fait, il n'est pas toujours me faire virer. N'ont pas compris pourquoi pas. J'ai une minuterie et il suffit de cocher la ReadyState à plusieurs reprises pendant quelques minutes. (En utilisant le navigateur intégré de contrôle).
if (browser.ReadyState != WebBrowserReadyState.Complete)
est recommandé.Et quand il y a des images dans la page,DocumentCompleted sera tiré à plusieurs reprises.Et c'est difficile à résoudre.Certains égards, comme la vérification de l'url ne sont pas exactes.
BTW, pourquoi ne pas utiliser ce:
this.Text = stringA + " - " + webBrowser1.Document.Domain;
Essayer à l'aide d'un préfixe fixe,le problème peut être résolu facilement.
Comment faire Pour Déterminer si une Page Est Fait, le Chargement dans le Contrôle WebBrowser
DocumentCompleted
est WinForms' wrapper de la DocumentComplete evert, cependant WebBrowserDocumentCompletedEventargs cache le paramètre sender vous ne pouvez donc pas dire l'image qui est la collecte de l'événement.Sinon, vous pouvez consulter
WebBrowser.ReadyState
.