- ベストアンサー
VB.Netで複数のフォームを制御する方法
- VB.Netで複数のフォームを制御する方法について教えてください。
- Form1上のButton1を押すと、Form2とForm3を呼び出してForm1を制御できないようにしたいです。
- Form2とForm3だけを制御可能にし、Form1を待機させる方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
わたくしごとで大変恐縮だがちょっと僕ももう寝ないといけないので簡単なところだけ。 Form2とForm3が必ずForm1の上に居るようにする(Form2とForm3が絶対にForm1に隠れないようにする)には、Form2とForm3のParentFormだか要するに親っぽい物をForm1に設定するといいよ。 Form2.ParentForm = Form1 みたいな感じ。OwnerFormだったか。名前は忘れた。 デュアルモーダル? ツインモーダル? どっちの名前がより格好良いかな? まぁそれはどうでも良くて2つのFormを同時にモーダルにするのは無理なのでどちらもモードレスで開く(ShowDialogではなくShow)事になるのだが、ではその間Form1をどうするかだけど、Form2とForm3の操作によってForm1の表示が変わる場合と完全に停止させたい場合とでやり方はずいぶん変わってくるはず。どちらにしても今時間がなくてやり方を考え付くには至っていないので申し訳ない。 完全停止ならForm2をShowした後Form3をShowDialogしてやれば良いかも知れないがだめかも知れない。だめだったらマルチスレッドにすればうまくいくかもしれないしだめかもしれない(waitとかjoin(これはJavaか?)とか駆使して。ただし、フォームスレッドをこの方法で停止させてはいけん)。だめだったらFormスレッドへのInvokeなんかをキーワードに探せば何か良い知恵が見つかるかも。 Form2とForm3が必ずペアで表示されるならForm1がForm2をShowDialogしてその時にForm2がForm3をShowしてやれば良いかも知れん。
その他の回答 (1)
- oboroxx
- ベストアンサー率40% (317/792)
C#のソースですが、参考になればです。 http://www.oborodukiyo.info/Forms/VS2008/F-ManageOwnerForm.aspx 要は子フォームのOwnerに親フォームをセットして表示し、親フォームのEnabledをfalseにすれば希望の動作が可能です。
お礼
どうもありがとうございます! >C#のソースですが 今勉強中でございますm(_ _)m Cは昔「はじめてのC」を 読んだ程度でございますので、気合い入れて解読させて いただきます^^; 結局、Form1.Enabled = False も試させていただきましたが、 コントロールの色がグレーアウトされてしまいまして、 細かいボタンを色分けしておりましたのが見にくくなって しまいましたため、残念ながらあきらめました。。。orz リンクをどうもありがとうございました!今後閲覧してくださる 方々にはoboroxx様につけていただいたリンク先が分かる方が 参考になるかな、と思うのですが、結局今回はNo.1氏にいただいた 方法で解決させていただきました故、アドバイスいただきました順に ポイントを付けさせていただきます。 この度はご閲覧・アドバイスいただきまして どうもありがとうございました!!!m(_ _)m
お礼
どうもありがとうございます! アドバイスいただいた後色々試させていただきまして、 何とか整理できました^^ >デュアルモーダル? ツインモーダル? どっちの名前がより格好良いかな? 自分的にはツインモーダルでございます Σ d(-_☆) あと今後3つ以上使う人が現れることを見据えて「マルチモーダル」とかw ̄ー ̄ >わたくしごとで大変恐縮だがちょっと僕ももう寝ないといけないので いえいえ私めのような者の質問に上級者の方々から少しでも アドバイスいただくことができれば十分でございますし非常に助かります。 結局Form1からForm2.ShowDialog後、 Form2からForm3.Show といたしましたら Form3のMouseDownやMouseMoveイベントのみは 取れることが分かりましたので、 Form3上のクリックしないと使えないコントロール群を なんとか他のFormへ移動いたしまして、 Labelなど表示用コントロールのみ残しましたところ、 自分のやりたいことができるようになりました^^ Form1は完全に停止させたかった次第でございます。 この度はご親切なご説明どうもありがとうございました!! m(_ _)m