C# WPF - dans l'Attente de la page à charger

J'ai vu plusieurs threads sur StackOverflow concernant ce sujet, mais aucune d'entre elles semblent apporter une réponse.

J'ai un bouton qui, lorsqu'on clique dessus, ouvre une page web invisible, accède à une URL, saisit les informations dans une boîte, il appuie sur un bouton, et racle l'écran pour plus d'informations.

Les os de mon code en gros, dans la cliquez sur:

WebBrowser wb = new WebBrowser;
wb.Visibility = System.Windows.Visibility.Hidden;
wb.Navigate("http://somepage.com");

Et c'est là que ça devient délicat.

Je suis à la recherche d'un moyen de assurer que le chargement de la page avant d'essayer d'entrer des données ou de gratter l'écran. J'ai vu plusieurs threads qui parlent de Navigated, IsLoaded, LoadCompleted ainsi que BackgroundWork trucs, mais je ne peux pas obtenir tout cela fonctionne.

Qui est la meilleure option pour les utiliser afin de déterminer si la page est entièrement chargée? Comment voulez-vous obtenir la méthode choisie pour travailler?

Je ne peux pas obtenir les données à partir de l'écran comme WPF ne pas utiliser le même GetElementByID.

Edit:

Par le commentaire ci-dessous, voici les erreurs que j'ai couru dans:

  • Navigué en premier dès que la page a été navigué trop et ne pas forcément attendre jusqu'à ce que tous les objets sont chargés. Cela fonctionne comme prévu, mais ne peut pas être utilisé pour mes fins.
  • IsLoaded jamais renvoie true

    private void GetData_Click(object sender, RoutedEventArgs e)
    {
      int x=0;
      HTMLDocument doc;
    
      wb = new WebBrowser();
      wb.Visibility = System.Windows.Visibility.Visible;
      wb.Navigate("somesite.com");
    
      doc = wb.Document as mshtml.HTMLDocument;
    
      while(!wb.IsLoaded)
      {
        //Wait
      }
    
      doc.getElementById("txt_One").innerText = "It Worked";
    
    }

Met dans une boucle infinie comme wb ne jamais charger.

  • C'est la version avec LoadCompleted

L'événement " le Système de.De Windows.Les contrôles.WebBrowser.LoadCompleted' ne peut apparaître sur le côté gauche de l' += ou -=

    private void GetData_Click(object sender, RoutedEventArgs e)
    {
      int x=0;
      HTMLDocument doc;

      wb = new WebBrowser();
      wb.Visibility = System.Windows.Visibility.Visible;
      wb.Navigate("somesite.com");

      doc = wb.Document as mshtml.HTMLDocument;

      wb.LoadCompleted += wb_LoadCompleted;

      doc.getElementById("txt_One").innerText = "It Worked";

    }

    void wb_LoadCompleted(object sender, NavigationEventArgs e)
    {

    }

Produit l'erreur

Une exception non gérée du type 'System.NullReferenceException' s'est produite dans {nom de fichier}

Informations supplémentaires: Objet de référence non définie à une instance d'un objet.

  • Veuillez donner des détails sur "ne peut pas obtenir tout cela fonctionne". Afficher votre code, décrire le problème à chaque tentative dans beaucoup plus de détails. Nous ne pouvons pas vous dire pourquoi cela ne fonctionne pas sans voir le code.
  • Merci pour votre travail d'édition... mais s'il vous plaît afficher votre code.
InformationsquelleAutor user3175176 | 2014-01-13