IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Fluidité dans les ProgressBar


Sujet :

Windows Forms

  1. #1
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut Fluidité dans les ProgressBar
    Bonjour à tous,


    J'ai un petit souci avec les progressbar de des Windows From.

    Sur le cas présent elle est utilisé pour indiquer l'avancement du chargement de mon programme. Mais bon le problème est partout.
    Lorsque j’incrémente la PB, l'avancement est lent, comme s'il y avait un timer qui l'augmente doucement jusqu'à ma valeur souhaitée, par contre à la décrémentation pas de souci.

    Afin d'isoler le souci j'ai créé un petit bout de code avec juste la progressbar.

    Une form, 4 textBox pour paramétrer le Minimal, le Maximale, la valeur d’incrémentation et la tempo du timer pour la fonction automatique, 3 boutons pour l’incrémentation, la décrémentation et l'automatique (avec le timer), un label rappelant la valeur que je demande à la progressbar.
    une form2 juste pour vous envoyer le texte à l’écran comme j'ai pas de micro.


    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    Public Class Form1
        Dim Up As Boolean = True
        Dim v As Integer
        Dim myform As Form2
        Private Sub txtMin_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtMin.TextChanged
            If IsNumeric(txtMin.Text) Then
                ProgressBar1.Minimum = CInt(txtMin.Text)
            End If
        End Sub
     
        Private Sub txtMax_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtMax.TextChanged
            If IsNumeric(txtMax.Text) Then
                ProgressBar1.Maximum = CInt(txtMax.Text)
            End If
        End Sub
     
     
        Private Sub buttonAuto_Click(sender As System.Object, e As System.EventArgs) Handles buttonAuto.Click
            If Timer1.Enabled Then
                Timer1.Enabled = False
            Else
                Timer1.Enabled = True
            End If
        End Sub
     
        Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
            If Up Then
                v = v + Val(txtIncr.Text)
                If v > ProgressBar1.Maximum Then
                    v = ProgressBar1.Maximum
                    Up = False
                End If
            Else
                v = v - Val(txtIncr.Text)
                If v < ProgressBar1.Minimum Then
                    v = ProgressBar1.Minimum
                    Up = True
                End If
            End If
     
            ProgressBar1.Value = v
            UpdateValue()
     
        End Sub
     
        Private Sub txtIncr_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtIncr.TextChanged
            If IsNumeric(txtIncr.Text) Then
                If Not Val(txtIncr.Text) < Val(txtMax.Text) Then
                    txtIncr.Text = 10
                End If
            Else
                txtIncr.Text = 10
            End If
        End Sub
     
        Private Sub buttonPlus_Click(sender As System.Object, e As System.EventArgs) Handles buttonPlus.Click
            If (ProgressBar1.Value + Val(txtIncr.Text)) < ProgressBar1.Maximum Then
                ProgressBar1.Value = ProgressBar1.Value + Val(txtIncr.Text)
            Else
                ProgressBar1.Value = ProgressBar1.Maximum
            End If
            UpdateValue()
        End Sub
     
        Private Sub buttonMoins_Click(sender As System.Object, e As System.EventArgs) Handles buttonMoins.Click
            If (ProgressBar1.Value - Val(txtIncr.Text)) > ProgressBar1.Minimum Then
                ProgressBar1.Value = ProgressBar1.Value - Val(txtIncr.Text)
            Else
                ProgressBar1.Value = ProgressBar1.Minimum
            End If
            UpdateValue()
        End Sub
     
        Private Sub UpdateValue()
            lblValue.Text = CStr(ProgressBar1.Value)
            Application.DoEvents()
        End Sub
     
        Private Sub txtTimer_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtTimer.TextChanged
            If IsNumeric(txtTimer.Text) Then
                Timer1.Interval = Val(txtTimer.Text)
            End If
        End Sub
     
        Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            myform = New Form2
            myform.Show()
        End Sub
     
    End Class


    La vidéo:




    J'ai testé l'objet MarqueeAnnimationSpeed, d'ailleurs je ne voie pas a quoi cela sert, mais cela ne change rien en tout cas.
    J'ai aussi testé avec des Refresh sur la progressBar ou sur la form.

    Mon souci comme je dit dans la vidéo c'est que lorsque c'est rapide, la PB n'a pas le temps d'aller à son maximum. Donc comment accélérer la transition entre 2 incrémentation positive, ou même pour avoir une transition immédiate sans que Windows lisse l’animation.

    Merci

    Merci de votre aide

  2. #2
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    Hello,
    A tout hasard, as-tu essayé de modifier la propriété Style de ta barre de progression ?
    https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx

  3. #3
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Je ne constate pas ce comportement c#, Framework 2.0 et 4.0 sous Windows 7 64b.

    Enlève Application.DoEvents();

    Tu peux envoyer ton projet compiler pour voir si cela fait pareille ?

Discussions similaires

  1. Ajouter progressbar dans les items d'une liste view
    Par der43e dans le forum Composants graphiques
    Réponses: 0
    Dernier message: 18/10/2016, 19h26
  2. Réponses: 14
    Dernier message: 01/09/2003, 22h46
  3. Editions de colones dans les ListView
    Par GrosChat dans le forum MFC
    Réponses: 7
    Dernier message: 27/03/2003, 10h28
  4. [VB6] [MDI] Menus contextuels dans les filles
    Par Rosec dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/09/2002, 14h00
  5. Pas de casse dans les XML
    Par :GREG: dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/07/2002, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo