0

ファイル内の行を処理する C# アプリケーションを作成しています。ファイルには 2 行、30 行、80 行、場合によっては 100 行を超える行が含まれる場合があります。

行はリストに格納されているので、から行数を取得できますmyFileList.Count。プログレスバーintは値の引数としてのみ受け取るため、行番号が 50 の場合、簡単に実行できます。

int steps = 100/myFileList.Count 
progress += steps; 
updateProgressBar ( progress );

しかし、ファイルに 61 行あるとしたら、100/61 = 1.64 なので、int steps1 になり、プログレス バーは 61% で停止します。どうすればこれを正しく行うことができますか?

4

3 に答える 3

5

ここでは、System.Windows.Forms.ProgressBarを使用していると想定しています。

進行状況のパーセンテージを計算する代わりに、[最大]フィールドの値を行数に設定するだけです。次に、代わりに現在の行番号に値を設定すると、適切なパーセンテージに自動的に変換されます。

// At some point when you start your computation:
pBar.Maximum = myFileList.Count;

// Whenever you want to update the progress:
pBar.Value = progress;

// Alternatively you can increment the progress by the number of lines processed
// since last update:
pBar.Increment(dLines);
于 2013-09-19T08:53:24.573 に答える
2

WinForms アプリケーションで作業していると仮定して

なぜここで100を使うのですか?

ProgressBar には、合計 septs に設定できる Maximum プロパティがあります。

例えば

ProgressBar1.Maximum = myFileList.Count;

その後、ループでこのようなトリックを行うことができます

ProgressBar1.value =0;
for(int i=0;i<myFileList.Count;i++){

 //your code here

 ProgressBar1.value++;
}

それでおしまい !

于 2013-09-19T08:58:59.017 に答える
1

として定義progressdouble、コードを変更します。

double steps = 100d/myFileList.Count;
progress += steps; 
updateProgressBar ((int) progress );
于 2013-09-19T08:52:08.737 に答える