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

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

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

Re[7]: 複数ウィンドウでMessageBox


(過去ログ 33 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■16417 / inTopicNo.1)  複数ウィンドウでMessageBox
  
□投稿者/ dai (3回)-(2008/04/05(Sat) 01:10:52)

分類:[.NET 全般] 

VC# 2008 .NET Framework3.5 フォームアプリケーション

複数のトップレベルのフォームを持つアプリケーションを作っているのですが
あるフォームでMessageBox.Show(this, "ほげ"); (thisはフォーム自身です)とすると
他のフォームも操作できなくなりました。
メッセージボックスを表示したフォーム以外は通常通り操作したいのですが
どうすればいいのでしょうか?
引用返信 編集キー/
■16418 / inTopicNo.2)  Re[1]: 複数ウィンドウでMessageBox
□投稿者/ 倉田 有大 (175回)-(2008/04/05(Sat) 01:17:06)
No16417 (dai さん) に返信
> VC# 2008 .NET Framework3.5 フォームアプリケーション
>
> 複数のトップレベルのフォームを持つアプリケーションを作っているのですが
> あるフォームでMessageBox.Show(this, "ほげ"); (thisはフォーム自身です)とすると
> 他のフォームも操作できなくなりました。
> メッセージボックスを表示したフォーム以外は通常通り操作したいのですが
> どうすればいいのでしょうか?

メッセージボックスもフォームで作るというのはどうでしょう?
引用返信 編集キー/
■16420 / inTopicNo.3)  Re[2]: 複数ウィンドウでMessageBox
□投稿者/ dai (4回)-(2008/04/05(Sat) 09:40:30)
No16418 (倉田 有大 さん) に返信
> メッセージボックスもフォームで作るというのはどうでしょう?

新しいフォームを作りShowDialogしてみましたが
メッセージボックスと同じように他のフォームも操作不能になりました。
これは.NET Frameworkの仕様ということで諦めるしかないんでしょうか?
試しにWin32APIのMessageBoxを使ってみたら意図した動作になりましたが
できれば.NET Frameworkのみで作りたいです。
引用返信 編集キー/
■16421 / inTopicNo.4)  Re[3]: 複数ウィンドウでMessageBox
□投稿者/ よもやま (19回)-(2008/04/05(Sat) 09:55:32)
よもやま さんの Web サイト
No16420 (dai さん) に返信
> ■No16418 (倉田 有大 さん) に返信
>>メッセージボックスもフォームで作るというのはどうでしょう?
>
> 新しいフォームを作りShowDialogしてみましたが
この場合、Showのほうが良いとおもうのですが・・

> メッセージボックスと同じように他のフォームも操作不能になりました。
> これは.NET Frameworkの仕様ということで諦めるしかないんでしょうか?
> 試しにWin32APIのMessageBoxを使ってみたら意図した動作になりましたが
> できれば.NET Frameworkのみで作りたいです。

引用返信 編集キー/
■16422 / inTopicNo.5)  Re[4]: 複数ウィンドウでMessageBox
□投稿者/ dai (5回)-(2008/04/05(Sat) 10:20:52)
No16421 (よもやま さん) に返信
> この場合、Showのほうが良いとおもうのですが・・

Showだとオーナーが操作できてしまうのです。
引用返信 編集キー/
■16423 / inTopicNo.6)  Re[5]: 複数ウィンドウでMessageBox
□投稿者/ 倉田 有大 (177回)-(2008/04/05(Sat) 10:41:45)
No16422 (dai さん) に返信
> ■No16421 (よもやま さん) に返信
>>この場合、Showのほうが良いとおもうのですが・・
>
> Showだとオーナーが操作できてしまうのです。

そらモードレスだから、あたりまえでよ。
操作できなくする処理を追加すればよいのでは?
後はおすすめしませんが、フォームごとにスレッドをわりあてるとか。(大丈夫かな?
引用返信 編集キー/
■16424 / inTopicNo.7)  Re[6]: 複数ウィンドウでMessageBox
□投稿者/ dai (6回)-(2008/04/05(Sat) 11:14:52)
No16423 (倉田 有大 さん) に返信
> 操作できなくする処理を追加すればよいのでは?

オーナーのEnableプロパティをfalseにすればそれらしい動作になりましたが
オーナーがモードレスフォームを所有していたらそれも面倒見なければなりませんし
閉じた時に元の状態に戻さなければならないし
メッセージボックスの各種フラグも真似なければならないとなると
Win32APIのMessageBoxを使った方がいいような気がしてきました…

引用返信 編集キー/
■16426 / inTopicNo.8)  Re[7]: 複数ウィンドウでMessageBox
□投稿者/ dai (7回)-(2008/04/05(Sat) 14:37:14)
メッセージボックスだけではなくOpenFileDialog等のダイアログも同様の動作をすると判明…
これもAPIで…というのは面倒過ぎるので、フォーム毎にスレッドを起動するようにしたら上手くいきました。
けどMainのSTAThreadはMTAThreadにした方がいいのかとか不安な点がありますが、とりあえず解決とします。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -