2017-10-01 4 views
-1
private void _btnOK_Click(object sender, EventArgs e) 
    { 
     _label1.Hide(); 
     _label2.Hide(); 
     _label3.Hide(); 

     for(int i = 1; i <= 100; i++) 
     { 
      Thread.Sleep(5); 
      _circularprogressbar.Value = i; 
      _circularprogressbar.Update(); 
     } 
    } 

    private void LoadingScreen_Load(object sender, EventArgs e) 
    { 
     _circularprogressbar.Value = 0; 
     _circularprogressbar.Minimum = 0; 
     _circularprogressbar.Maximum = 100; 
    } 
} 

}incrémenter Texte dans la barre circulaire Progrès

Ceci est mon code. Qu'est-ce que je veux faire est, je veux avoir un texte à l'intérieur de la barre de progression qui montre le pourcentage de la progression de 1 à 100 pour cent. Que puis-je ajouter à mon code? merci

Répondre

0

Ce Thread.Sleep(5) bloque l'ensemble de votre thread d'interface utilisateur. Si vous voulez que votre interface utilisateur soit réactive, pendant que la progression a lieu, vous devez créer un fil séparé. Quelque chose comme ceci:

private void _btnOK_Click(object sender, EventArgs e) 
{ 
    _label1.Hide(); 
    _label2.Hide(); 
    _label3.Hide(); 

    Task.Factory.StartNew(() => 
    { 
     for (int i = 1; i <= 100; i++) 
     { 
      Thread.Sleep(5); 
      Invoke((Action)(() => 
      { 
       _circularprogressbar.Value = i; 
       _circularprogressbar.Update(); 
      })); 
     } 
    }); 
} 

Notez que vous aurez besoin t utiliser Invoke pour BeginInvoke pour accéder aux composants de l'interface utilisateur de l'intérieur de ce fil.

+0

ce qui est pour invoquer? – Gab

+0

Exécution de tâches dans le thread d'interface utilisateur. Si vous essayez de contourner les objets d'interface utilisateur d'un autre thread, vous obtiendrez une violation du thread croisé. En fait, l'accès à n'importe quoi en dehors du thread doit être prudent et peut causer des problèmes. –

0

Voici ce que je ferais:

private void _btnOK_Click(object sender, EventArgs e) 
    { 
     _label1.Hide(); 
     _label2.Hide(); 
     _label3.Hide(); 

     for(int i = 1; i <= 100; i++) 
     { 
      _circularprogressbar.Value = i; 
      _percent_lable_name.Text = string.Format("{0}%", _circularprogressbar.Value); 
      _circularprogressbar.Update(); 
     } 
    } 

    private void LoadingScreen_Load(object sender, EventArgs e) 
    { 
     _circularprogressbar.Value = 0; 
     _circularprogressbar.Minimum = 0; 
     _circularprogressbar.Maximum = 100; 
    } 
} 

Voir si cela vous aide!

Merci

Techcraft7 :)