- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(C#)フォームのキャンセルで計算を中断する方法)
(C#)フォームのキャンセルで計算を中断する方法
このQ&Aのポイント
- VisualStudio(Standard)でC#の勉強をしている者です。フォームのキャンセルボタンをクリックしても、実際にイベントが発生していないのか、ループを中断することができなかった。
- フォームのキャンセルボタンをクリックした時にイベントが発生し、ループを中断する方法を教えてください。
- 上記のコードではキャンセルボタンをクリックしてもループを中断することができなかった。どのようにすれば良いのか教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
★ループの中でメッセージ処理を行えばよい。 ・キャンセルボタンを押してもループを止める事が出来なかった理由は、ループ中に メッセージを処理していないためです。このため、キャンセルボタンを押した信号が 出てもループ処理中なのでメインのプロシージャで Cancel_Click 関数が呼ばれなかった のです。 ・私は C# は名前程度しか知らないため実装例を紹介できません。 参考になればと思い C言語での処理をサンプルとして載せます。 サンプル: MSG msg; while ( PeekMessage(&msg,hWnd,0,0,PM_REMOVE) ){ if ( !IsDialogMessage(hWnd,&msg) ){ TranslateMessage( &msg ); DispatchMessage( &msg ); } } その他: ・C# でもメッセージを処理する関数(メソッド)などがあると思いますので調べてみて下さい。 検索キーワードは『DoEvents』で探すと見つかると思います。 下に1つだけ紹介します。→おそらく DoEvents() メソッドを使えば Cancel_Click 関数が 呼ばれるようになってキャンセルできるようになると思います。 ・以上。参考に。
お礼
ご回答いただき、ありがとうございます。教えていただきましたDoEvents()をループの中に入れることでキャンセルすることができました。非常に勉強になりました。ありがとうございました。