0

私の現在の状況では、ユーザーが選択したいくつかのデータ型のランダム データを生成する winform アプリケーションがあります。ユーザーは、生成する必要がある行数を選択することもできます。生成には、button_click メソッド内で呼び出されるいくつかの関数を使用します。行の量と行ごとの列の量は可変長です。今私の質問は、進行状況全体に対して 1 つのプログレスバーを作成することは可能ですか? これは私が自分で作成した最初の C# プロジェクトです。バックグラウンド ワーカーに関する情報は既に見つかりましたが、質問が可能であれば情報を見つけることができません。何とか私を助けてくれることを願っています。私の悪い英語を申し訳ありません。

4

4 に答える 4

0

私があなたの質問を正しく理解していれば、はい、あなたProgressBarはあなたのコードの異なる部分の中からあなたの質問の値を更新することができます。

さまざまなアクションにさまざまな値を割り当てたい場合は、ある種のメソッドを作成するだけです。例えば:

仮定myProgressBar.Maximum = rowCount + columnCount;

public void UpdateProgressBar(int i)
{
   if(myProgressBar.Value < myProgressBar.Maximum)
   {
      if(myProgressBar + i > myProgressBar.Maximum)
          myProgressBar.Value = myProgressBar.Maximum;
      else myProgressBar.Value += i;
   }
   myProgressBar.Update();
}

ProgressBar同様に、行の追加や削除、ボタンのクリックなど、反映させたいイベントでも同様のコードを呼び出します。

BackGroundWorkerUIの応答性を維持するための、に関するチュートリアルをご覧ください。

于 2013-02-08T08:40:31.157 に答える
0

行と列の数はわかります。次に、progressBar1.Maximum を行 + 列に設定し、プログラムがバックグラウンド ワーカーで 1 つの列を実行するときに、progressBar1.Value += 1; を増やします。. progressBar がスムーズに実行されるように、backgroundWorker にすべてを含める必要があります。

于 2013-02-08T08:34:31.730 に答える
0

ProgressBarには、「Value」という名前のメンバーがあります。作成されるアイテムの数がわかっている場合は、それに応じて設定できます。

于 2013-02-08T08:35:45.073 に答える
0

バックグラウンドワーカーなしでそれを行うことができます。これを実現するには、進行状況バーの Minimum、Maximum、および Value プロパティを使用します。progressbar1.Maximum を行のカウントに設定し、ループの行内で値を 1 増やします。

progressBar1.Minimum = 1;
progressBar1.Maximum = Rows.Count;

progressBar1.Value = 1;
for (int i = 1; i <= Row.Count; i++)
{
  progressBar1.Value = progressBar1.Value + 1;
  ...
  ... do your code
  ...   
于 2013-02-08T09:04:55.087 に答える