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

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

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

Re[2]: モードレス⇒モーダルと開いたときに最初の画面を操作するには?


(過去ログ 75 を表示中)

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

■44066 / inTopicNo.1)  モードレス⇒モーダルと開いたときに最初の画面を操作するには?
  
□投稿者/ やまだ (3回)-(2009/11/26(Thu) 15:57:13)

分類:[.NET 全般] 

質問させてください。
現在、WindowsXP、VisualStudio2005にて、C#、.NET Framework 2.0を使用したクライアントアプリケーションを開発しています。

画面遷移として、
画面A⇒画面B(モードレス)⇒画面C(モーダル)
としたときに、画面Cから、画面Aを操作したいと考えております。

画面Aから画面Bをモードレスで開くときには、Form#Showを、
画面Bから画面Cをモーダルで開くときには、Form#ShowDialogを使用しています。
このように実装すると、画面Cから画面Aは操作できません。

上記のように、画面Cから、画面Aを操作する方法はありますでしょうか?
画面Aから画面Bを別スレッドで起動すれば、希望する操作は出来ましたが、別スレッドで起動する方法以外を探しています。
また、操作するだけなら、画面Cから画面AのEnabledプロパティをfalse⇒trueにすればできましたが、画面Aを前面にもってくることができませんでした。

どなたかご存知の方がいらっしゃいましたら、ご教授いただけると幸いです。


引用返信 編集キー/
■44075 / inTopicNo.2)  Re[1]: モードレス⇒モーダルと開いたときに最初の画面を操作するには?
□投稿者/ らんぺるーる (116回)-(2009/11/26(Thu) 17:59:18)
No44066 (やまだ さん) に返信
> 質問させてください。
> 現在、WindowsXP、VisualStudio2005にて、C#、.NET Framework 2.0を使用したクライアントアプリケーションを開発しています。
>
> 画面遷移として、
> 画面A⇒画面B(モードレス)⇒画面C(モーダル)
> としたときに、画面Cから、画面Aを操作したいと考えております。
>
> 画面Aから画面Bをモードレスで開くときには、Form#Showを、
> 画面Bから画面Cをモーダルで開くときには、Form#ShowDialogを使用しています。
> このように実装すると、画面Cから画面Aは操作できません。
>
> 上記のように、画面Cから、画面Aを操作する方法はありますでしょうか?
> 画面Aから画面Bを別スレッドで起動すれば、希望する操作は出来ましたが、別スレッドで起動する方法以外を探しています。
> また、操作するだけなら、画面Cから画面AのEnabledプロパティをfalse⇒trueにすればできましたが、画面Aを前面にもってくることができませんでした。
>
> どなたかご存知の方がいらっしゃいましたら、ご教授いただけると幸いです。
>
>

以前私が類似の質問をしたことがありますので、参考にしてください。
ShowDialogを使用すると、同じプロセス内では、ShowDialogをした
画面以外は操作できなくなってしまいます。

そのため以下2つの対処案があります。
・ShowDialogの使用をやめ、画面のアクティブ制御を独自で実装する。
(そんなに難しくはありません。方法については、ログを参照してみてください)
・アプリケーションを分けて、プロセス間通信をおこなって制御する。
(画面間の情報のやりとりが少ない場合。私はこの方法を採用しました。)

http://bbs.wankuma.com/index.cgi?mode=al2&namber=40380&KLOG=70
引用返信 編集キー/
■44227 / inTopicNo.3)  Re[2]: モードレス⇒モーダルと開いたときに最初の画面を操作するには?
□投稿者/ やまだ (4回)-(2009/12/02(Wed) 09:42:23)
らんぺるーるさん、ご回答ありがとうございます。
ご紹介していただいた書込みを参考にさせていただきます。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -