Je travaille avec C# .net, application Windows, je voudrais utiliser o Progressbar en CLICK sans BackgroundWorker, peut-on suggérer, merci à l'avance ....... ............., j'ai essayé d'utiliser du fil, la boucle For itération,Comment utiliser Progressbar en CLICK sans BackgroundWorker
Répondre
La réponse rapide est assez proche de « vous ne pouvez pas ».
La réponse plus longue est:
Théoriquement vous pouvez simplement commencer une barre de progression, puis le mettre à jour dans une boucle for().
Cependant, cela ne fonctionne pas très bien en pratique. La raison en est que pendant que vous êtes dans votre boucle, votre application est "occupée" et elle ne répond pas aux messages Windows venant du système d'exploitation. Le système d'exploitation remarquera cela et décidera que vous ne répondez pas, il prend donc un instantané de votre fenêtre. À partir de ce moment, chaque fois que vous mettez à jour votre barre de progression, le système d'exploitation affiche simplement l'instantané au lieu de l'état actuel, donc la barre de progression est déplacée à (par exemple) 35% . Cela bat complètement le point d'avoir une barre de progression!
Pour résoudre ce problème, votre thread d'interface utilisateur doit conserver les messages de traitement. Il y a deux façons de le faire.
1) l'utilisation d'un fil séparé pour le poste de traitement, et demander le thread d'interface pour mettre à jour la barre de progression. C'est l'approche «Background Worker», et ça marche bien.
2) Vous pouvez appeler Application.DoEvents() à partir de votre boucle fixe pour(). Cela permet d'envoyer des messages pendant que vous êtes "occupé" et évite ainsi le problème. Cependant, cela est extrêmement dangereux car le traitement des messages peut provoquer des appels entrants à votre code (par exemple, si vous cliquez sur un bouton "go" pour commencer le traitement, l'utilisateur pourra cliquer à nouveau sur "go" et vous essaierez un traitement à l'intérieur de votre traitement). Pour résoudre ce problème, vous devez être très prudent en installant un MessageFilter pour vous assurer que vous ne traitez que des messages "sûrs" dans ce contexte. N'essayez pas cette approche à moins que vous ne sachiez vraiment ce que vous faites.
Alors que vous laisse avec une seule approche pratique: Utiliser un BackgroundWorker (ou votre propre fil). Il y a beaucoup de tutoriels sur la façon de faire cela sur le web, donc je ne vais pas développer cette approche ici.
- 1. Comment utiliser Android ProgressBar en mode déterminé?
- 2. dialogue ProgressBar Sans frontière
- 3. Vous voulez appeler même BackgroundWorker plusieurs fois sans utiliser Application.DoEvents
- 4. Comment utiliser ToolStripMenuItems sans événements de souris (événement Click ou Double Click)?
- 5. BackGroundWorker
- 6. Progressbar dans Android
- 7. BackgroundWorker
- 8. iPhone ProgressBar
- 9. Progressbar togther avec asyncTask
- 10. Réaffectation l'événement click click (en utilisant jQuery)
- 11. Utiliser des bitmaps évolutifs pour seekbar/progressbar Android
- 12. contrôle Progressbar dans Datagrid en C#
- 13. Déclenchement d'un événement "Click" sans entrée utilisateur
- 14. comment déclencher l'événement click sans effacer l'événement click par défaut sur jstree
- 15. WPF Progressbar continue animation
- 16. Comment "relier" l'événement click après unbind ('click')?
- 17. Annuler backgroundworker
- 18. jquery: Comment déclencher click() sans modifier l'état de l'élément?
- 19. ProgressBar dans un AppWidget
- 20. Comment créer un ProgressBar par programme?
- 21. C# Ionic.Zip comme travailleur progressbar fond
- 22. Progressbar dans lightbox
- 23. Comment: Utiliser MvcContrib.Pagination sans utiliser MvcContrib.Grid Voir
- 24. vb.net - backgroundworker & listview.items.add()
- 25. python pulsant GTK Progressbar
- 26. C#: Blocage de formulaire popup malgré BackgroundWorker
- 27. problème dans l'animation de ProgressBar en QT
- 28. Convertir wav en mp3 avec Lame.exe - ProgressBar?
- 29. ProgressBar in vb.net 2005
- 30. Comment changer la valeur de progressbar en C#?
Pouvez-vous élaborer plus de wat exactement que vous voulez atteindre.? Par le détail donné je reçois que vous voulez montrer la barre de progression sur un clic d'un bouton suis-je raison !!! – Malcolm