Bonsoir,
J'ai un contrôle qui contient un élément Webbrowser, et un autre ProgressBar qui est là pour afficher l'avancement du chargement de la page.
Pour faire simple, sur l'évènement ProgressChanged, je modifie les valeurs de la ProgressBar :
Code :
- private void webBrowser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e)
- {
- int value = (int) (100 * (e.CurrentProgress / e.MaximumProgress));
- if (e.CurrentProgress == -1)
- {
- webBrowserProgressBar.Value = 0;
- }
- else
- {
- webBrowserProgressBar.Value = value;
- }
- }
|
Problème, la progressBar n'évolue absoluement pas pendant le chargement de la page, mais le fait, de manière continue, à la fin du chargement de la page. Preuve s'il en est que j'ai ajouté aux évènements "début de chargement" et "document chargé" l'affichage et le masquage de ce composant :
Code :
- private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
- {
- webBrowserProgressBar.Visible = false;
- }
- private void webBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
- {
- webBrowserProgressBar.Visible = true;
- }
|
Résultat : La progressBar n'évolue pas le temps qu'elle est affichée, c'est donc bien que les évènements sont stockés, mais appliqués seulement après la fin du chargement.
J'ai fouiné sur le net, et tous les tutoriels présente le même code que moi, peu ou proue.
Quelqu'un sait comment faire en sorte que la progressBar se mette correctement à jour ? Il faudrait le faire dans un thread parallèle, mais ces choses là apportent des dépendances croisées qui ne me plaisent pas des masses. Y'a-t-il un moyen "propre" et standard de le faire dans les WinForms ?
Merci.
[/code]
Message édité par Predicator le 27-05-2009 à 15:28:27