Meilleur auteur de réponses
Fenetre de chargement pendant l'execution d'une commande

Question
-
Bonjour,
Dans mon programme j'exécute une commande DOS, cela va occuper le CPU pendant quelques secondes et j'aimerai temporiser en affichant une petite fenêtre de chargement.
Cette fenêtre affiche le nom du fichier traité en exécution et une progressbar qui affiche l'évolution.
L'évolution n'est pas réelle car je vais temporiser par défaut 10secondes, cette barre avance donc quoi qu'il arrive de 0 a max en 10 sec. Puis la fenêtre se ferme et le programme reprend son fonctionnement normal.
Je sais comment gérer une progressbar, mais comment créer une form très simple (juste le cadre) pour y rajouter la barre, un ou deux label?
Comment l'appeler pendant l'exécution de la form principale et transmettre des string de la principale a cette nouvelle fenetre de chargement?
Petite option: la fenetre de chargement est au dessus de la principale quoi qu'il arrive.
Merci de vos réponses.
Réponses
-
Bonjour,
C'est facile a faire tout ce trouve a porter de mains
Faite une nouvelle form (Form2) trouvé les propriété suivante et leurs mettre les même valeurs que celle que je vais donner
FormBorderStyle = None
TopMost = True
StartPosition = CenterScreen
Une petite explication sur les propriétés
- FormBorderStyle a None ce qui veux dire sans bordure
- TopMost a True est pour mettre la fenêtre devant toutes les autres
- StartPosition a CenterScreen est pour centrer la fenêtre au centre de l'écran
Une fois que vous avez réalisé ses propriétés sur la form2 il suffira de mettre en place les label souhaiter et la progresse barre
Si le traitement ne prend qu'une dizaine de secondes le mieux serais d'utiliser DoEvent et non un BackGroundWorker (quoi que ... a voir quand meme)
Une fois que tout est en place il faut aller dans l'événement Shown, l'événement Shown c'est quand la form a fini de ce dessiner, en visibilité !
mettre la procédure que vous avez fait et ajouter un Close a la fin ce qui donnerais un truc dans ce genre la
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown ProgressBar1.Maximum = 100 ProgressBar1.Minimum = 1 ProgressBar1.Step = 1 For i As Integer = 0 To ProgressBar1.Maximum Application.DoEvents() System.Threading.Thread.Sleep(100) ProgressBar1.PerformStep() Next Me.Close() End Sub
.
Cordialement, Troxsa- Proposé comme réponse TroxsaEditor vendredi 29 mai 2009 09:00
- Marqué comme réponse Morphée vendredi 29 mai 2009 09:26
Toutes les réponses
-
Bonjour,
C'est facile a faire tout ce trouve a porter de mains
Faite une nouvelle form (Form2) trouvé les propriété suivante et leurs mettre les même valeurs que celle que je vais donner
FormBorderStyle = None
TopMost = True
StartPosition = CenterScreen
Une petite explication sur les propriétés
- FormBorderStyle a None ce qui veux dire sans bordure
- TopMost a True est pour mettre la fenêtre devant toutes les autres
- StartPosition a CenterScreen est pour centrer la fenêtre au centre de l'écran
Une fois que vous avez réalisé ses propriétés sur la form2 il suffira de mettre en place les label souhaiter et la progresse barre
Si le traitement ne prend qu'une dizaine de secondes le mieux serais d'utiliser DoEvent et non un BackGroundWorker (quoi que ... a voir quand meme)
Une fois que tout est en place il faut aller dans l'événement Shown, l'événement Shown c'est quand la form a fini de ce dessiner, en visibilité !
mettre la procédure que vous avez fait et ajouter un Close a la fin ce qui donnerais un truc dans ce genre la
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown ProgressBar1.Maximum = 100 ProgressBar1.Minimum = 1 ProgressBar1.Step = 1 For i As Integer = 0 To ProgressBar1.Maximum Application.DoEvents() System.Threading.Thread.Sleep(100) ProgressBar1.PerformStep() Next Me.Close() End Sub
.
Cordialement, Troxsa- Proposé comme réponse TroxsaEditor vendredi 29 mai 2009 09:00
- Marqué comme réponse Morphée vendredi 29 mai 2009 09:26
-
-