• ベストアンサー

C#でプログレスバーを作るには?

C#でプログレスバーを作るにはどうしたらいいのでしょうか? 例えばいくつものファイルをコピーする処理をしているプログラムがあるとします。 そういったときプログレスバーをどうカウントアップさせていけばよいのでしょうか?

  • mr-r00
  • お礼率93% (480/516)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

方法はいくつかあると思いますが…… ・ファイルの数を元に進行させる ・ファイルサイズを元に進行させる ・マーキースタイル (System.Windows.Forms.ProgresBar) または Indeterminateモード (System.Windows.Controls.ProgressBar) にする あたりでしょうか。 どれが適当かは,状況によって異なります。

mr-r00
質問者

お礼

ありがとうございます 参考になります

関連するQ&A

  • プログレスバーについて

    お世話になっています。初心者VBプログラマーです。 5MB~10MBのファイルをコピーをするプログラムを作成しているのですが、やはりコピーには時間がかかるのでプログレスバーを作成することになりました。 ひとつのファイルをコピー中例えば、10MB中○○%コピー出来たかと、プログレスバーで表現できますか? DoEventsを利用するのでしょうか? 詳細サイトがありましたら教えてください。

  • 探しています~プログレスバーのまき戻しについて

    何か処理中のものがあり、進捗状態がプログレスバーに表示されているのですが、キャンセルボタンを押すとその処理を中断できて、それまで進んでいたプログレスバーの進捗が徐々に減っていき、最終的にゼロに戻るという仕組みの画面というか、UIを探しています。 ソフトのインストールとかファイルのコピーとか色々探しているのですがなかなか見つかりません。 似たような動作をするプログラムを作りたいので参考にしたいのですが・・・。 どなたか知っている方がいれば教えてください!

  • プログレスバーに似たコントロールについて。

    プログラムの進歩状況をプログレスバーをつかっていますが、フロッピーにファイルを保存したり、ソフトウェアをインストールしたりするときに表示される、”プログレスバーもどき”のコントロールはどうしたら入手できますか? 素人には無理でもかまいません。 どなたか教えてくださいませんか?

  • プログレスバーで処理進捗を反映させたいが・・・泣

    backgroundWorkerで重たい処理をさせたいのですが、どのようにプログレスバーを噛ませてあげたらいいのか悩んでいます。 重たい処理はこんな感じです。 (ソースが今のPCに無いので大雑把な内容でお許し下さい) このページを参考にしています。 http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.h... 処理自体は仕様通りに出来ています。 どうしても大きいファイルなど操作するのでどうしても時間を要します。 そのため、ファイルコピーなどの各処理が終わるたびにプログレスバーに反映させたいのですが、参考にしているページだとforを用いたループでやっているのでどうやったらいいのか悩んでいます。 (単に想像力が足りないのかもしれませんが・・・) どのようにするといいか教えていただけませんでしょうか? //処理内容 ファイル読み込み ファイルコピー テキスト開く 1000行書きこむ(繰り返しでかけないので1行1行書き込み) テキスト閉じる ファイル読み込み ファイルコピー ファイルの内容を検査して間違いを修正 ファイルをリネーム ファイルを指定したサーバのパスにバラ撒く ・ ・ ・ ・ ・ こんな類似処理を何千回もする

  • C# プログレスバーに関すること

    先ほどご質問させて頂いた件で1つ解決していなかったのですが質問のほうを閉じてしまいました. なので,もう一度ご質問させて頂きます. ic += 1; //プログレスバーの設定 //最小値 int minimum = 0; //最大値 int years = iYearE - iYearS; int hours = iHourE-iHourS; int iiMinute = iiMinuteE-iiMinuteS; int Maximun = (years+1) * Maxmonth * Maxday * (hours+1) * (iiMinute+1); progressBar1.Style = ProgressBarStyle.Continuous; progressBar1.Minimum = minimum; progressBar1.Maximum = Maximun; progressBar1.Value = ic; label8.Text = (ic / Maximun)*100 + "%処理中"; if (ic/Maximun==1) { label8.Text = "終了"; 上記の様なプログラムを組んでプログレスバーを表示させているのですが,問題はラベルの中が 変動せずに,プログラスバーがすべてたまるまで0%で,たまった瞬間に100%になってしまいます. どうすればラベルのほうの数値を徐々に大きくしていけるのでしょうか? どなたかご教示お願いたします. }

  • MFCを使わないで、プログレスバーを表示したい。

    複数のファイルで構成されているフォルダがあって、そのフォルダのコピーを作成する処理を行うとします。 その処理の進行状況を、ダイアログボックス上に貼り付けたプログレスバーコントロールで表示したい と思っているのですが、MFCを使用しない例はネットなどで検索しても見つけることができません。 例えば、フォルダの容量の「現在○○%コピーしました。」とか、それが無理なら全体の何ファイル目を処理 しているかなどを、プログレスバーで表示することは可能ですか。 数値的な表示が無理なら、現在処理中かどうかを表示するだけでも構いません。 ご教授の程、よろしくお願いいたします。 環境:VC++6.0, WIN32 API

  • Access プログレスバー 画面固まる

    Access 2007 VBA でファイル出力処理が長いため、以下を参考にしてプログレスバーを設置しました。 http://www.moug.net/tech/acvba/0060023.htm 1,000件程度だと進行状況がちゃんと表示されるのですが、10,000件単位になるとAccess自体が応答せず、プログレスバーも途中で止まったまま、だけど処理は裏で動いているようでファイル出力自体は時間はかかりますがちゃんと出力されます。 DBアクセスを含んだファイル出力処理なので、多少時間がかかっているのかと思います。 また、私の技術の低さから処理自体に時間がかかってしまっていることもあると思いますが、私の技術では処理自体を変えて早くするのは限界です。 Access画面が固まらず、リアルタイムでプログレスバーを進行させる手段等ございましたらご教授いただけるとありがたいです。

  • プログレスバーについて

    VBで開発をしているのですが、一つの処理(関数)で時間のかかる処理があって、その経過をプログレスバーで表示させようと思ってるのですが、関数内の処理の進み具合を表示することってできるのでしょうか? ちなみに、関数はDLLです。 何かよい方法がありましたら、教えていただきたいと思っております。よろしくお願いします。

  • C# or VB プログレスバー

    プログレスバーで進行状況を表示する処理を入れています。 http://dobon.net/vb/dotnet/programing/progressdialog.html 上記のサイトをパクってとりあえず作ってみました。きちんとできているのですが 1つだけ問題があって try { ProgressDialog pd = new ProgressDialog(); //ダイアログのタイトルを設定 pd.Title = "カウントアップ"; //プログレスバーの最小値を設定 pd.Minimum = 0; //プログレスバーの最大値を設定 pd.Maximum = 10; //プログレスバーの初期値を設定 pd.Value = 0; //進行状況ダイアログを表示する pd.Show(this); //処理を開始 for (int i = 1; i <= 10; i++) { //プログレスバーの値を変更する pd.Value = i; //メッセージを変更する pd.Message = i.ToString() + "番目を処理中..."; //キャンセルされた時はループを抜ける if (pd.Canceled) break; //1秒間待機する(本来なら何らかの処理を行う) System.Threading.Thread.Sleep(1000); } //ダイアログを閉じる pd.Close(); } catch { MessageBox.Show("error"); } こんな感じで使い、プログレスバー表示中に例外が走るとMessageBoxがモーダレスで 表示されてしまいます。プログレスバー表示前だとモーダルのままです。 色々調べたところ原因は裏でスレッドが走っているからだと思います。たぶん・・ ところが対処法となると少々困っています。モーダルでMessageBoxを表示させたいのですが どうすればよいのでしょうか?教えてください。

  • プログレスバー

    プログレスバーの進み具合ですが、スキャン実行後1時間ぐらいでほとんど(99%)進みましたがそれからが8時間たってもファイルをチェックしています。プログレスバーはどういう仕様で進んでいるのですか? ※OKWAVEより補足:「ESETセキュリティ ソフトウェア シリーズ」についての質問です。

専門家に質問してみよう