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

わんくま同盟

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

C# と VB.NET の入門サイト


(過去ログ 149 を表示中)
■86796 / )  Re[3]: メッセージボックスが出ない
□投稿者/ にゃるら (9回)-(2018/03/16(Fri) 17:05:19)
No86795 (にゃるら さん) に返信

うーん、こういうことなのでしょうか?

モーダルで表示される直前にForm1から親子関係が解かれたユーザコントロールは、
一時引受人であるParkingwindowさんの管理下に入る。
ユーザコントロールが破棄されるときに、Parkingwindowさんは自分が引き受けているハンドルが
すべてなくなったことをチェックする処理を遅延実行する。
メッセージボックスは、オーナーが指定されていないので、親ウィンドウがParkingWindowさんになる。
遅延していたチェック処理が走り、Parkingwindowさんは自分が引き受けているハンドルが
すべてなくなったことで自分をDestoryしようとする。

その結果、モーダルウィンドウは親ウィンドウを失うことになるため、閉じられる。

これを回避するためには、

・モーダルウィンドウの親ウィンドウを明示的に指定する
・ユーザコントロールが破棄されたあと、ParikingWindowsさんが引き受けているハンドルがないのかを
チェックするまでの間は新しいモーダルウィンドウは開かない

といった感じのことで対応しなくちゃいけないので、魔界の仮面弁士さんが挙げられた様々な対応案の
どれかを採用すれば解決できるってことなんですかね。。。

「オーナーとなるウィンドウを渡してモーダルウィンドウを出す」としておくのが吉っぽいですね。
返信 編集キー/


管理者用

- Child Tree -