IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Lien direct entre un composant WebBrowser et un composant ProgressBar


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 48
    Points
    48
    Par défaut Lien direct entre un composant WebBrowser et un composant ProgressBar
    Bonjour,

    Je suis assez nouveau en C# et WinForms, et je viens d'un bon moment en Java. Voilà pour la présentation succinte

    Pour le problème, le voici. Je cherche à connecter un composant WebBrowser et un composant ProgressBar, pour afficher l'avancement du chargement de la page. Ces deux composants sont dans le même composant parent, et donc, tournent dans le même thread.

    J'ai trouvé pas mal de code concernant les problèmes de rafraichissement d'interface, notamment avec BeginInvoke, ou les BackgroundWorker. Seulement, j'ai l'impression que ça s'applique à un traitement sur des données par exemple, et on souhait afficher un avancement de ces traitements.

    Je n'ai pas trouvé, en testant et en cherchant, de solution au problème de connexion directe entre les deux composants. Je n'ai pas de contrôle sur l'exécution du chargement de la page, ou alors je n'ai pas trouvé comment.

    Quelqu'un saurait me dire s'il est possible, simplement, de connecter ces deux composants ?

    Voici la portion de code concernant la connexion des deux composants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    private void webBrowser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
    {
        int value = Convert.ToInt32(100 * (e.CurrentProgress / e.MaximumProgress));
        webBrowserProgressBar.Value = value;
    }
     
    private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        webBrowserProgressBar.Visible = false;
        webBrowserProgressBar.Value = 0;
    }
     
    private void webBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {
        webBrowserProgressBar.Visible = true;
    }
    ProgressChanged est bien appelé lors du chargement de la page, mais la progressBar ne se met pas à jour. Elle fait tout ce qui lui a été demandé à la fin du chargement de la page.

    Merci pour toute aide

  2. #2
    Membre actif
    Inscrit en
    Octobre 2007
    Messages
    236
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Octobre 2007
    Messages : 236
    Points : 233
    Points
    233
    Par défaut
    En analysant les chiffres retournés par WebBrowserProgressChangedEventArgs lors de l'événement ProgressChanged, je peux affirmer que les valeurs :
    WebBrowserProgressChangedEventArgs.CurrentProgress
    et
    WebBrowserProgressChangedEventArgs.MaximumProgress
    ne sont que le fruit d'une estimation du volume de données qui va être téléchargé puisque MaximumProgress prend toujours la valeur 10000 pour n'importe quel Url et les valeurs de CurrentProgress sont toujours divisible par 50.

    La solution la plus simple et la plus proche à la réalité est de :
    - Initialiser le ProgressBar à WebBrowserProgressChangedEventArgs.MaximumProgress
    - Pour chaque ProgressChanged affecter WebBrowserProgressChangedEventArgs.CurrentProgress à ProgressBar.Value
    - Puisqu'il sagit d'une estimation, incrémenter le ProgressBar d'une valeur arbitraire à chaque événement FileDownloaded car le WebBrowser n'a aucun support du progrés de téléchargement des fichiers utilisés par la page web téléchargée comme les images, les scripts, etc.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 48
    Points
    48
    Par défaut
    Effectivement, les évènements sont bien gérés.
    J'ai essayé ce que tu m'as dis (points 1 et 2 seulement), sur un site bien long à charger (20minutes.fr), le comportement change bien. La barre évolue maintenant, mais atteint à peine les 10% à la fin du chargement de la page...

    Je trouve très bizarre que ça fonctionne comme ça. Limite je trouve ça inutile (en fait, je vois pas quand ça peut servir à quelque chose).

    Dans ce cas, autant utiliser une barre de progression sans avancement (genre le style Marquee).

    Parce que l'augmentation arbitraire sur l'évènement FileDownload, ça fait "style", mais ça n'a aucun réel intérêt :/

    Merci pour l'aide en tout cas

Discussions similaires

  1. [AC-2010] Créer un lien direct entre 2 listes déroulantes.
    Par PierrotMfff dans le forum IHM
    Réponses: 7
    Dernier message: 16/01/2014, 09h11
  2. Y a t il un lien direct entre UML et MVC?
    Par belspirit dans le forum MVC
    Réponses: 6
    Dernier message: 27/05/2011, 00h36
  3. Lien symbolique entre Apache et Tomcat sous Debian
    Par rohstev dans le forum Administration système
    Réponses: 17
    Dernier message: 13/05/2008, 10h33
  4. [ Tomcat ] Couper tout lien physique entre BD et la Servlet.
    Par spk4ever dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 18/01/2006, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo