Maison  >  Article  >  développement back-end  >  Exemple de partage de code sur la façon d'implémenter la fonction de barre de progression avec pourcentage en C#

Exemple de partage de code sur la façon d'implémenter la fonction de barre de progression avec pourcentage en C#

黄舟
黄舟original
2017-05-21 10:55:561953parcourir

Cet article présente principalement l'implémentation C# de la fonction barre de progression avec pourcentage, analyse les exigences fonctionnelles de la barre de progression avec pourcentage et fournit des étapes d'implémentation spécifiques et des exemples dans le sous forme d'exemples. Pour les méthodes de fonctionnement associées, les amis dans le besoin peuvent se référer à

Cet article décrit l'exemple de C# implémentant la fonction de barre de progression avec pourcentage. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Exigences fonctionnelles :

Si un processus de calcul fastidieux sera effectuée dans le programme, I Après que l'utilisateur ait cliqué sur le bouton , une fenêtre de barre de progression apparaîtra pour afficher la progression de l'exécution (de préférence avec un pourcentage. Une fois l'exécution terminée, la fenêtre de la barre de progression). se fermera et reviendra à la fenêtre principale du programme. Il n'est pas possible de cliquer sur le formulaire parent avant de fermer la fenêtre enfant.

Méthode d'implémentation :

Concevez d'abord le formulaire de barre de progression Form2 et placez le contrôle ProgressBar progressBar1 et le contrôle Label label1 au centre de Form2 , code :

public partial class Form2 : Form
{
 public Form2(int _Minimum,int _Maximum)//带参数,表示进度条的范围的最小值和最大值
 {
   InitializeComponent();
   progressBar1.Maximum=_Maximum;//设置范围最大值
   progressBar1.Value = progressBar1.Minimum = _Minimum;//设置范围最小值
 }
 public void setPos(int value)//设置进度条当前进度值
 {
   if (value < progressBar1.Maximum)//如果值有效
   {
     progressBar1.Value = value;//设置进度值
     label1.Text = (value * 100 / progressBar1.Maximum).ToString() + "%";//显示百分比
   }
   Application.DoEvents();//重点,必须加上,否则父子窗体都假死
 }
 private void Form2_Load(object sender, EventArgs e)
 {
   this.Owner.Enabled = false;//设置父窗体不可用
 }
 private void Form2_FormClosed(object sender, FormClosedEventArgs e)
 {
   this.Owner.Enabled = true;//回复父窗体为可用
 }
}

Appelez le formulaire For1m design, ajoutez Bouton de contrôle bouton1, ÉvénementCode :

private void button1_Click(object sender, EventArgs e)
{
   Form2 fm = new Form2(0,100);
   fm.Show(this);//设置父窗体
   for (int i = 0; i < 100; i++)
   {
     fm.setPos(i);//设置进度条位置
     Thread.Sleep(100);//睡眠时间为100
   }
   fm.Close();//关闭窗体
}

Supplément : A un ami a dit que fm.Show(this): n'est pas pris en charge dans vs2003, vous pouvez alors ajouter un paramètre supplémentaire au constructeur de From2 :

public Form OwnerForm;
public Form2(int _Minimum,int _Maximum,Form _OwnerForm)//带参数,表示进度条的范围的最小值和最大值
{
   InitializeComponent();
   progressBar1.Maximum=_Maximum;//设置范围最大值
   progressBar1.Value = progressBar1.Minimum = _Minimum;//设置范围最小值
   this.OwnerForm=_OwnerForm;
}
private void Form2_Load(object sender, EventArgs e)
{
   this.OwnerForm.Enabled = false;//设置父窗体不可用
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
   this.OwnerForm.Enabled = true;//回复父窗体为可用
}

La modification correspondante dans Form1 est :

private void button1_Click(object sender, EventArgs e)
{
   Form2 fm = new Form2(0,100,this);
   fm.Show();//设置父窗体
   for (int i = 0; i < 100; i++)
   {
     fm.setPos(i);//设置进度条位置
     Thread.Sleep(100);//睡眠时间为100
   }
   fm.Close();//关闭窗体
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn