none
Fenetre de chargement pendant l'execution d'une commande RRS feed

  • 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.
    jeudi 28 mai 2009 21:52

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
    vendredi 29 mai 2009 09:00
    Auteur de réponse

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
    vendredi 29 mai 2009 09:00
    Auteur de réponse
  • Merci je teste ça!
    vendredi 29 mai 2009 09:25
  • en fait c'est bon!
    vendredi 29 mai 2009 09:36