• 締切済み

処理をとめるキャンセルボタンのあるダイアログ作成

開始ボタンを押すと、 ”保存しています。とめたい場合はキャンセルしてください” と言ったようなダイアログにキャンセルボタンがついたダイアログを 表示し(表示中に処理は行われていく)、処理をキャンセルさせたいのですが、 Showで表示させると、キャンセルボタンが反応せず、 ShowModalを使用すると表示と同時に処理が止まってしまい、 ボタンを押さない限り処理が進まずにいます。 何かよい方法はないでしょうか? よろしくおねがいします

みんなの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

>そのダイアログが処理中にアクティブにならないので、 >ボタンが押せないのです… アクティブにならないのではなく、処理の中で while等のループに入っていませんか? そうなるとメインループを通らなくなるのでイベント(ボタンを押したこと)を 受け取れなくなります。 その手の質問は過去に何度かでているので検索してみてください。 質問:「キャンセル」ボタン付きの処理中ダイアログ http://oshiete1.goo.ne.jp/kotaeru.php3?q=1378154 質問:ループからの抜け出し方 http://oshiete1.goo.ne.jp/kotaeru.php3?q=362155 質問:ボタンが押された時にループから抜けるには http://oshiete1.goo.ne.jp/kotaeru.php3?q=1921945

Caya
質問者

お礼

アドバイスありがとうございます。 過去ログもみたのですが、どれもスレッドを使うようなものばかりで、 他の方法はないのかなと思ったのですが、 やはり、これしかないのでしょうか。

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.2

スレッドを分けて、中止をメッセージで渡すようにすれば…… 実装方法は聞かないでくれ(汗

Caya
質問者

お礼

アドバイスありがとうございます。 やはり、スレッド増やすしかないのでしょうか。 もっとシンプルにつくれないかなと考えていたのですが…

回答No.1

モードレス表示する方法が正解かと。 Showでよいと思います。 ShowModalすると、 そのダイアログを閉じるまで ShowModal()は制御を返しません。 キャンセルボタンが反応しない件は ソースを見てみないと何とも。。。 キャンセルボタン押下時のハンドラを書いて そこで閉じるような処理は入っているのでしょうか。

Caya
質問者

補足

ありがとうございます。 ボタンが反応しないと言うのは、 そのダイアログが処理中にアクティブにならないので、 ボタンが押せないのです… 保存処理後、試しに閉じていたダイアログを表示しっぱなしにしておくと、 処理が終わった後ではボタンを押すことができます。

関連するQ&A