Bonjour , lorsque que je souhaite mettre la valeur de
e.CurrentProgress
dans
me.ToolStripProgressBar.value = e.currentprogress
, dans l'événement
Handles WebBrowser.ProgressChanged
PrivateSubso(ByVal sender As System.Object,ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs)Handles WebBrowser1.ProgressChanged
Me.ToolStripProgressBar1.Maximum = e.MaximumProgress
Me.ToolStripProgressBar1.Value = e.CurrentProgress
EndSub
j'ai un message disant , "La valeur '-1' n'est pas valide pour 'Value'. 'Value' doit être compris entre 'minimum' et 'maximum'. Nom du paramètre : Value"
mais il y a un autre message disant , "La valeur '1' n'est pas valide pour 'Value'. 'Value' doit être compris entre 'minimum' et 'maximum'. Nom du paramètre : Value"
Et bien, le problème parais tout bête à première vue, mais peut être me trompé-je...
La, le message d'erreur dit clairement que les valeurs 1 et -1 ne sont pas accepté. Vérifie un peu les valeurs Maximum et Minimum que ta progressbar peut accepter. Ca se passe peut être aussi dans ton code.
Je n'ais pas tester, mais on dirait que tu veux télécharger un fichier avec un indicateur du niveau de téléchargement (?). Si c'est le cas, il y a d'autre façon de faire qu'avec une WebBrowser, qui selon moi son meilleur (corrigez moi si je me trompe), et même si tu réalise un Navigateur internet, comme utiliser un WebClient, qui plus est, à une fonction qui retourne un pourcentage de téléchargement, que l'on peut utiliser dans le paramètre value de ta progressbar.
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Salut, oui j'ai déjà regardé dans minimum est maximum et il n'y a pourtant rien qui pourrait empêcher de fonctionner, j'ai aussi essayé de re cliquer sur déboguer, le programme et la toolstripprogressbar fonctionne pendant quelques secondes et le message d'erreur revient
pas télécharger un fichier proprement dis, mais télécharger la page (qui est aussi un fichier)
Pour télécharger la page web, j'ai utiliser un WebClient, inspire toi de cet exemple :
Imports System.Net
Public Class Form1
Public WithEvents downloader As WebClient
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
WebBrowser1.Navigate("https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Accueil_principal")
End Sub
Public Sub DownloadStart()
downloader = New WebClient
downloader.DownloadFileAsync(New Uri("https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Accueil_principal"), "MaPage.html")
End Sub
Private Sub downloader_DownloadProgressChanged(sender As Object, e As DownloadProgressChangedEventArgs) Handles downloader.DownloadProgressChanged
ProgressBar1.Value = e.ProgressPercentage
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
DownloadStart()
End Sub
End Class
Comme ça, tu télécharger un fichier, et du affiche la progression de téléchargement avec la progressbar. J'utilise généralement le WebClient pour faire des choses comme ça, c'est pour ça que je te propose ma version. Mais il y en a surement d'autres
- Edité par vanaur 17 septembre 2017 à 20:43:34
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Excuse moi, j'ai donné du code de mes archives un peu trop vite, et je me doute bien que ca ne t'aide pas à comprendre.
La propriété CurrentProcess, appartenant au control WebBrowser vérifie le nombre totale de bytes dans le document en cours de téléchargement (donc, le nombre de byte augmente jusqu'à ce que tout le fichier sois passé), le nombre total de bytes dans un document est un chiffre "aléatoire", qui peut être plus grand ou plus petit que la valeur accepté par la propriété value d'une progressbar, par exemple : ton document fait 10020 bytes (octets), et tu veux afficher cette valeur dans ta progressbar, la valeur étant tops grande, dépassant les 100% de la propriété value, le programme génèrera une erreur. Mais comme je l'ais dit, je n'utilise pas la WebBrowser pour télécharger des fichiers. Si tu veux garder ton code et ta webbrowser tel quel, il y a une alternative (que je n'ais pas encore pu tester) :
If not e.CurrentProgress = -1 AND e.CurrentProgress < ProgressBar1.Maximum Then
ProgressBar1.value = e.CurrentProcess
End If
si j'ai bien compris e.CurrentProgress est un nombres pas très précis qui peut être au dessus ou en dessous (mais ça encore sa gêne pas trop) de la valeur Maximum indiquer par e.MaximumProgress ? , mais pourquoi e.currentprogress est de -1 même quand il y à aucun document à télécharger et pas simplement 0 et aussi indiquer un peu mieux l'erreur que mettre -1 lol ?
Ha oui, désoler, j'ai oublier la value qui prend -1 ^^'
Comme je te l'ais dit, CurrentProgress est un nombre qui change en fonction du nombre d'octets en cours de téléchargement, mais quand le fichier à télécharger, est téléchargé, CurrentProgress prend comme valeur "-1", ce qu'on peut traduire par "téléchargement terminé"
EDIT:
> ... e.CurrentProgress est un nombres ...
e = System.Windows.Forms.WebBrowserProgressChangedEventArgs
CurrentProgress = Une propriété de "e"
Par convention on dit : "La valeur de la propriété "CurrentProgress" de l'objet "e" est un nombre..."
Pour ne pas mélanger certaines choses par la suite
- Edité par vanaur 18 septembre 2017 à 17:35:02
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
d'accord donc quand on lance son navigateur et qu'il y a la première page c'est pour ça qu'il y a "l'erreur" , parce-que la première page à fini de charger ? enfin c'est valable aussi pour la suite des navigations
bah quand on créer un navigateur il y a bien une page qu'on ouvre grâce au chargement de l'application
et une fois quelle est charger il y a "l'erreur" , tu vois ou pas ?
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.WebBrowser1.Navigate("http://www.google.fr/")
end sub
non pas celle là lol, pas grave jme comprends. quand tu lance ton navigateur tu à bien une page de démarrage par exemple Google et quand cette page à finit de charger e.currentprogress devient -1 et exécute l'événement webbrowser.progresschanged et qui ensuite génère l'erreur ""La valeur '-1' n'est pas valide pour 'Value'. 'Value' doit être compris entre 'minimum' et 'maximum'. " et qui bloque l'application , d'ou il faut faire
If not e.CurrentProgress = -1 AND e.CurrentProgress < ProgressBar1.Maximum Then
ProgressBar1.value = e.CurrentProcess
End If
pour que l'application reste pas bloquer par "l'erreur" c'est bien ça ?
mais sinon jveux bien une explication à propos de ton image :)
Comme quoi un p'tit bout de code est mieux qu'une grande explication xD
Oui, donc ce code permet en effet de ne pas faire "planter" le programme, en lui indiquant donc les valeurs qu'ils peut prendre : tout sauf -1 et 100.
> mais sinon jveux bien une explication à propos de ton image :)
Tu ouvre google chrome (si tu l'as bien sur, mais je pense que ca fonctionne aussi avec Firefox, voir Edge), et tu fais CTRL+MAJ+I, tu inspecte la page quoi, si tu es sous Google Chrome, tu vois qu'au dessus de la petite fenêtre qui s'est ouverte un certain nombre d'erreur, tu vas dans l'onglet "console" pour voir les messages, et chez moi ca donne ça (sous google chrome) :
Et bien ça, ce sont les erreurs qu'a rencontré le navigateur internet sur cette page, le système d'affichage d'erreur pour la WebBrowser de Microsoft (IE) qu'utilise le Framework .NET affiche les erreurs en mode "brutal" comme je dirais-ca, en effet, une boite de dialog s'affiche, comme une erreur de Débogage. Il est possible de les rendre "disable" selon un paramètre (me souvient plus du nom).
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...
Le meilleur moyen de prédire l'avenir, c'est de l'inventer | N'oubliez pas [résolu] et +1 | Excusez mon ôrtograffe, j'essaie de l'améliorer...