C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.74551 の関連記事表示

<< 0 >>
■74551  Re[2]: プログレスバー表示
□投稿者/ よぽん -(2015/01/09(Fri) 12:54:11)
    ありがとうございます。
    以下の通り試してみましたが、結果、同じでした

    ちなみに
    panel1.Visible = false; 行を削除すれば最後まで表示されたものが出る(出っぱなしになる)のですが
    panel1.Visible = falseのタイミングがわかりませんでした。

    //Button1のClickイベントハンドラ
    private void Button1_Click(object sender, System.EventArgs e)
    {
    //処理が行われているときは、何もしない
    if(BackgroundWorker1.IsBusy) return;

    //Button1を無効にする
    Button1.Enabled = false;

    //コントロールを初期化する
    ProgressBar1.Minimum = 0;
    ProgressBar1.Maximum = 100000;
    ProgressBar1.Value = 0;
    panel1.Visible = true;
    panel1.Update();

    //BackgroundWorkerのProgressChangedイベントが発生するようにする
    BackgroundWorker1.WorkerReportsProgress = true;
    //DoWorkで取得できるパラメータ(10)を指定して、処理を開始する
    //パラメータが必要なければ省略できる
    BackgroundWorker1.RunWorkerAsync(10);
    }

    //BackgroundWorker1のDoWorkイベントハンドラ
    private void BackgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
    BackgroundWorker bgWorker = (BackgroundWorker)sender;

    //パラメータを取得する
    int maxLoops = (int)e.Argument;

    //時間のかかる処理を開始する

    //ProgressChangedイベントハンドラを呼び出し、コントロールの表示を変更する
    for(int i = 0; i < 100000; i++) bgWorker.ReportProgress(i);

    //ProgressChangedで取得できる結果を設定する結果が必要なければ省略できる
    e.Result = maxLoops;
    }

    //BackgroundWorker1のProgressChangedイベントハンドラ
    private void BackgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
    //ProgressBar1の値を変更する
    ProgressBar1.Value = e.ProgressPercentage;
    }

    //BackgroundWorker1のRunWorkerCompletedイベントハンドラ//処理が終わったときに呼び出される
    private void BackgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
    if(e.Error != null)
    {
    MessageBox.Show("エラー:" + e.Error.Message);
    }
    else
    {
    //正常に終了したとき結果を取得する
    int result = (int)e.Result;
    }
    //Button1を有効に戻す
    Button1.Enabled = true;
    panel1.Visible = false;
    }
記事No.74542 のレス /過去ログ125より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -