![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
プログレスバーで進行状況を表示する処理を入れています。
http://dobon.net/vb/dotnet/programing/progressdi …
上記のサイトをパクってとりあえず作ってみました。きちんとできているのですが
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を表示させたいのですが
どうすればよいのでしょうか?教えてください。
No.3
- 回答日時:
プログレスバーのフォーム ( ProgressForm ) に対してモーダルにするなら、
class ProgressDialog に
public ProgressForm Form
{
get
{
return form;
}
}
を追加
ProgressDialog を呼び出す側の Form に
delegate void ShowMessageBoxDelegate();
void ShowMessageBox()
{
MessageBox.Show("error");
}
を追加
ProgressDialog pd = new ProgressDialog();
を try の前に出して
ProgressDialog pd = new ProgressDialog();
try
{
・・・
}
とし、
catch
{
ShowMessageBoxDelegate smb = new ShowMessageBoxDelegate(ShowMessageBox);
pd.Form.Invoke(smb);
pd.Close();
}
のようにすればいいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 電気工事士 【電気受電キューピクルのPD】受電キューピクルの引き込み線が入って来た断路部の先の2 2 2022/10/30 06:53
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- その他(スマートフォン・携帯電話・VR) グラフィックボード(2080ti)からのtype-cによる映像出力について教えてください。PD対応の 2 2022/09/16 09:21
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- バッテリー・充電器・電池 モバイルチャージャー( QC3.0/PD対応)のメーカー2種類でどちらが良いか? 4 2022/06/03 10:29
- 電気工事士 【電気設備】キュービクル内のCT、PD、進相コンデンサ、直列リアクトルのうち変圧器と同じ 1 2022/10/25 23:02
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- バッテリー・充電器・電池 HUAWEI充電規格『SCP 22.5W』って対応しているのはHUAWEIの端末だけですか? 最近A 1 2023/07/26 19:00
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
VBScriptでのWord印刷
-
doGetとdoPostの違い
-
ブラウザを閉じた後のサーバ側...
-
JavaScriptからJAVAクラスを呼...
-
location.hashの遷移
-
どのコンポーネントでクリック...
-
JSP、サーブレットの初期処理
-
flush()メソッドについて・・・
-
Javaでのデバッグコード削除
-
Javaプログラムからポップアッ...
-
数値の定数を付ける時
-
[Java] while(true)の意味
-
Java
-
setTimeOutとsetInterval、どっ...
-
COBOLの考え方からJavaへ
-
enumの使い方
-
処理実行後、終了させないで最...
-
GASで、起動時間の最大値を超え...
-
下記のリストならno002が含まれ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
doGetとdoPostの違い
-
Javaプログラムからポップアッ...
-
SwingUtilities.invokeLater(ne...
-
Javaでのデバッグコード削除
-
Tomcat高負荷時の設定について
-
JavaScriptからJAVAクラスを呼...
-
データ未入力時のエラー処理が...
-
アコーディオンメニューをアン...
-
ブラウザを閉じた後のサーバ側...
-
[Java] while(true)の意味
-
数値の定数を付ける時
-
Javaアプリケーション実行の返...
-
ラジオボタンの選択判定
-
onBlurとonFocusの処理順序につ...
-
スレッド1とスレッド2を交互に...
-
WPF C#でF10のイベント取得方法...
-
flush()メソッドについて・・・
-
ExcelVBA で文字列の特定の文字...
-
無限ループをわざと作って時計...
おすすめ情報