- ベストアンサー
自フォームの閉じ方に関して
自フォームの閉じ方に関して 初歩的な質問で申し訳ありません。 今、Form1、Form2 という2つのフォームが存在し、From1 のあるボタンを 押した場合、Form1 自体は閉じて、Form2だけを表示させるような事をしたいと 考えています。 モーダル等の方法では、Form1 が開いたままForm2 が起動してしまうかと思います。 何か良い方法がありますでしょうか。。。 教えて下さい。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下の順序で行います。 Form1を非表示にする。(見えないようにする) Form2を表示する。 Form2から戻った時、Form1を表示にする。(見えるようにする) 今、Form1だとすると this.Visible=false; form2.ShowDialog(); this.Visible=true; のようにします。 追伸: 今後C#の件で質問される場合は、最初にC#である旨を述べておいた方がよいかと思います。 その方が、的確な回答が寄せられるかと思います。 (C#のカテゴリがあれば、その必要はないのですが・・・・)
その他の回答 (2)
- koi1234
- ベストアンサー率53% (1866/3459)
言葉足らずだったかもしれません # 私はC#わかりませんのでCで書きます 補足に書いているのはCloseですよね そうではなくて非表示(閉じるわけではなくて隠すだけ)での対応ではダメですか? という意味です それをやりたい位置の設計にも寄ると思いますが メインダイアログで開く子Dialogに対してCloseしてしまうと その段階でプログラムが終了してしまいます # 補足に書かれてる状態で実際どうなったのかが書いてないので状況を掴みかねますが VC6での確認になりますが 私のところでは最初に書いたコードで見た目の動作としての実現できています
お礼
ありがとうございます。 とても参考になりました!!
- koi1234
- ベストアンサー率53% (1866/3459)
親画面を非表示にする方法ではダメですか? CDlg1 dlg; 安直に書けばこんな感じ (親ダイアログのボタンイベント) ShowWindow(SW_HIDE); dlg.DoModal(); ShowWindow(SW_NORMAL);
補足
C#で開発を行っていますが、親画面を非表示にする為に、 Form1 では以下のように記述してみましたがダメでした。。。 Form2 frm2 = new Form2(); frm2.ShowDialog(); this.Close(); あるいは、 this.dispose(); Form2を表示させた後に、自画面を閉じただけですが。。。。 よろしくお願いします。
お礼
ありがとうございました。 おっしゃる通り、最初からC#である旨を伝えておく べきでした。 参考にさせて頂きました!