3

例:

私のコードのこの時点で、プログレスバーは70になっています。

pbUpload.Value = 70;

foreach (string file in finalFiles)
{
    //processes
    //processes
}

finalFilesの長さは可変です。つまり、固定番号はありません。したがって、基本的に最初に数値を把握する必要があります。これは簡単ですが、プログレスバーを70から100(100が最後の「各」要素)に更新するループを構築するにはどうすればよいですか?

4

2 に答える 2

5

これはもっと簡単です:

int count = finalFiles.Length;
int current = 0;
foreach (string file in finalFiles)
{
    current++;
    pbUpload.Value = current / count * 30 + 70;
}

幸運を!

于 2012-08-16T19:43:45.953 に答える
2

これに使用BackgroundWorkerします。

public partial class Form1 : Form
{
   public Form1()
   {
       InitializeComponent();
       Shown += new EventHandler(Form1_Shown); 
       backgroundWorker1.WorkerReportsProgress = true;
       backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
       backgroundWorker1.ProgressChanged += 
       new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
       pbUpload.Value = 70;
   }

   void Form1_Shown(object sender, EventArgs e)
   {
       backgroundWorker1.RunWorkerAsync();
   }

   int val = 0;

   void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
   {
       val = (100 - pbUpload.Value) / finalFiles.Length;

       foreach (string file in finalFiles)
       {
           //Your processes
           backgroundWorker1.ReportProgress(pbUpload.Value + val);
       }
   }  

   void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
   {
        pbUpload.Value = e.ProgressPercentage;
   }
}
于 2012-08-16T19:33:26.947 に答える