- - PR -
[ShowDialog]フォームのオープン後、自分自身を閉じたい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-11-11 11:25
「frmMain」と「frmSub」の2つのフレームがあるとします。
「frmMain」からは「frmSub」を。 「frmSub」からは「frmMain」を、それぞれ呼びます。 クリックイベント内にて「ShowDialog」を行っています。 実行すると、新しいイベントが発生するたびに画面が増えてしまいます。 自分自身のウィンドウがうまく閉じれていないような状況です。 解決策をご教授いただけないでしょうか。 「frmSub」の画面が開いたあとに、自分自身が閉じれるといいのですが…。 初歩的な質問かもしれませんが、よろしくお願いします。 ================================= 「frmMain」内 Private Sub button1_Click() Me.Close() 'frmSubへ Dim fm As New frmSub fm.ShowDialog(Me) End Sub ================================= _________________ | ||||
|
投稿日時: 2004-11-11 13:15
frmSub で frmMain を呼ぶ理由は何ですか?
| ||||
|
投稿日時: 2004-11-11 13:19
「frmMain」が、入力画面。
「frmSub」が結果表示画面のようになってます。 なので、入力←→結果を自由に切り替えたいのです。 よい方法があればご教授いただけますでしょうか。 _________________ | ||||
|
投稿日時: 2004-11-11 13:37
だったら尚更入力画面を閉じる必要がない気がするのですが。 切り替えたいというのであれば、入力/結果をユーザコントロールとして実装し、親フォームが表示する子を切り替えるとかのほうがいいような気がします。 | ||||
|
投稿日時: 2004-11-11 14:08
入力「frmMain」→結果「frmSub」で、増えてしまうのは、よいことにしても、
結果→入力のときもさらに増えてしまうのです。 タスクバー上に、ボタン(?)がキリなくならぶことになってしまって…。 ひとつ閉じると、まとめて閉じるのですが、やはりよろしくないと。 結果→入力への切り替えも、上記の例と同じように記述してます。
メニュー画面もあり、メニューのボタンから、 各々を開くときは全く問題ありません。 子フォーム同士で呼び合うことは無理なのですか? イメージとしては、HTMLでいうところの<A href="〜" target="_self">で、 自分自身のなかに呼ぶというようなイメージでよいのでしょうか? (私の浅い経験では、これくらいしか思い浮かびませんでした。) 申し訳ありませんが、 もう少し具体的にご説明いただけると幸いです。 経験が浅いもので、申し訳ありません。 _________________ | ||||
|
投稿日時: 2004-11-11 14:36
諸農です。
いまいち状況が把握できないのですが、 何故に、「結果→入力のときもさらに増えて」しまうのですか? 結果画面を閉じれば、呼元の入力画面に戻りますよね? 戻らないまたは戻してはいけない理由か何かがあるのですか? _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||
|
投稿日時: 2004-11-11 14:57
なるほど〜。 確かに、結果画面を閉じれば、呼び元の画面に戻る気がします。 入力画面からも、結果画面からも、 先頭で記述したような開き方をしていたので、 どんどん画面が増える結果に…。 ちょっとやってみます。 _________________ | ||||
|
投稿日時: 2004-11-11 20:57
結果画面「frmSub」を閉じることで、呼び元の画面「frmMain」に戻ることはできました。
ありがとうございます。 しかし、今回のシステムでは、再読み込み(FormのLoadイベント)が行われないと、 うまくいかないことがわかりました。 ふつうに閉じただけではLoadは発生しないので、 以下のようにしてみたのですが、うまくいきません。 処理は走るのに、画面上はなにも変わらない。 ================================= 「frmSub」結果画面内 Private Sub button1_Click() Me.Close() 'frmMainへ Dim fm As New frmMain 'fm.ShowDialog(Me) 'このかわりに、 Call fm.frmMain_Load(sender, e) '「frmMainのLoadイベント」を呼ぶ End Sub ================================= 実現したいことをまとめます。 「frmMain」と「frmSub」の画面の切り替えが行いたい。 呼ばれたフォームは、「Loadイベント」から処理を行いたい。 修正覚悟で、あまりやり方は問いませんので、 なにかいい方法をご存知でしたら、ご教授願います。 素人で申し訳ありません。 _________________ |