• ベストアンサー

自フォームの閉じ方に関して

自フォームの閉じ方に関して 初歩的な質問で申し訳ありません。 今、Form1、Form2 という2つのフォームが存在し、From1 のあるボタンを 押した場合、Form1 自体は閉じて、Form2だけを表示させるような事をしたいと 考えています。 モーダル等の方法では、Form1 が開いたままForm2 が起動してしまうかと思います。 何か良い方法がありますでしょうか。。。 教えて下さい。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

以下の順序で行います。 Form1を非表示にする。(見えないようにする) Form2を表示する。 Form2から戻った時、Form1を表示にする。(見えるようにする) 今、Form1だとすると this.Visible=false; form2.ShowDialog(); this.Visible=true; のようにします。 追伸: 今後C#の件で質問される場合は、最初にC#である旨を述べておいた方がよいかと思います。 その方が、的確な回答が寄せられるかと思います。 (C#のカテゴリがあれば、その必要はないのですが・・・・)

yurix_1
質問者

お礼

ありがとうございました。 おっしゃる通り、最初からC#である旨を伝えておく べきでした。 参考にさせて頂きました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.2

言葉足らずだったかもしれません # 私はC#わかりませんのでCで書きます 補足に書いているのはCloseですよね そうではなくて非表示(閉じるわけではなくて隠すだけ)での対応ではダメですか? という意味です それをやりたい位置の設計にも寄ると思いますが メインダイアログで開く子Dialogに対してCloseしてしまうと その段階でプログラムが終了してしまいます # 補足に書かれてる状態で実際どうなったのかが書いてないので状況を掴みかねますが VC6での確認になりますが 私のところでは最初に書いたコードで見た目の動作としての実現できています

yurix_1
質問者

お礼

ありがとうございます。 とても参考になりました!!

全文を見る
すると、全ての回答が全文表示されます。
  • koi1234
  • ベストアンサー率53% (1866/3459)
回答No.1

親画面を非表示にする方法ではダメですか? CDlg1 dlg; 安直に書けばこんな感じ (親ダイアログのボタンイベント) ShowWindow(SW_HIDE); dlg.DoModal(); ShowWindow(SW_NORMAL);

yurix_1
質問者

補足

C#で開発を行っていますが、親画面を非表示にする為に、 Form1 では以下のように記述してみましたがダメでした。。。  Form2 frm2 = new Form2(); frm2.ShowDialog(); this.Close(); あるいは、  this.dispose(); Form2を表示させた後に、自画面を閉じただけですが。。。。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メインフォームとサブフォームについて

    こんにちは。 VBを勉強中の初心者です。 今メインとして使っているフォームをForm1とします。 サブとして使っているフォームをFrom2とします。 プログラムの実行時にForm1がでてくるのですが、 Form1を起動せず、Form2を起動したいです。 (メインフォームとサブフォームを入れ替えたいです) この場合はどうすればいいでしょうか? よろしくお願いします。

  • フォームのZOrder?

    VB2008でWindwosフォームからボタンを押して、 別のWindowsフォームを開き、そのフォームをクリックすると閉じて、元のフォームに行くプログラムで、 別のフォームを開いた後に、何か別のアプリを全面に持ってきて、同じようにフォームをクリックして、元のフォームが全面にでるかと思えば、別のアプリの下に隠れていました。 Form1.show() ボタンClickイベント     Form2.show() 別のアプリを前に Form2 フォームClickイベント Form1.Show()   <----- 読んでいるのに Me.close() <----- ここがいけない? From1が全面に来ず、別のアプリが上になる。 何か方法がまずいのでしょうか?

  • accessでフォームの複製

    accessのフォーム(form_A)のあるボタンを押すと同じフォーム(form_A)・・・(複製?)を表示させたいのですが・・・どんな方法がありますでしょうか?

  • accessでフォームの複製を行いたいのですが・・・

    accessのフォーム(form_A)のあるボタンを押すと同じフォーム(form_A)・・・(複製?)を表示させたいのですが・・・どんな方法がありますでしょうか?

  • フォームロード時にアンロード。

    VBでフォームロード時に、ある条件のときだけ、 自フォームをアンロードするプログラムを作りたいのですが、 form_load プロシージャにunload Me と書くと、 どうしても、一瞬フォームが表示されます。 フォームを表示せずにアンロードする方法は ないのでしょうか? よろしくお願いします。

  • フォームロードについて

    VB2008で、Form_Load()に Me.Visible = falseや Me.Close()としてもフォームの非表示やフォームを閉じたりしないのですが、なぜなのでしょうか? 最初に起動した場合に、Form_Loadで初期設定を行った後に、自動的に直ぐにフォームを非表示や閉じることをしたいです。

  • フォームの表示が消えてしまう・・・

    初歩的なことでつまづいております。 フォームを利用して「入力」フォームに文字を入れ、「入力!」ボタンを押すと「結果」フォームにその文字を表示させたいのですがうまくいきません。 やりたいことは、 1.「入力」フォームに文字を入れます(たとえば"123") 2.「入力!」ボタンを押します 3.すると「結果」フォームに"123"と表示させたいです  4.また、「入力」フォームにはそのまま"123"が表示されたままにしたいです なぜか下記の記述だとボタンを押した瞬間にすべてのフォームの文字表示が消えてしまいます。 これはどうしてなのでしょうか?すみませんがよろしくお願いします。 <HTML> <HEAD> <TITLE></TITLE> <SCRIPT LANGUAGE="JavaScript"><!-- function calcButton() { var inputValue = document.calc.input.value; document.calc.result.value = inputValue; } //--></SCRIPT> </HEAD> <BODY> <FORM name="calc" action=""> 入力<INPUT type="text" size="5" name="input"><BR> 結果<INPUT type="text" size="5" name="result"><BR> <INPUT type="submit" value="入力!" onClick="calcButton()"> </FORM> </BODY></HTML>

  • Accessのフォームを閉じるのではなく、非表示にする

    Accessのフォームにおいて、 ボタンをクリックすると、そのフォームが閉じる、 というイベントをつけております。 そのイベントを、フォームが閉じるのではなく、 フォームを非表示にし、メモリ上では開いたまま というイベントに直したいのですが、 Form_F003.Visible = False というような記述をするという 解釈でよろしいのでしょうか?? その解釈でないとしたら、 フォームのソース上で、 フォームを非表示にし、メモリ上では開いたまま というプロパティを設定できるでしょうか?? どなたか、ご指導くださいませ。

  • 任意のフォームが表示されているかを知りたい

    VB6で、 任意のフォームが表示されているか表示されていないかを知りたいのですが、その方法がわかりません。 具体的に言うと、 いくつかのフォームのあるアプリケーションを作っているのですが、Form2のである処理をしたときに、Form1が画面上に表示されている場合と、表示されていない場合で、異なる処理をしたいのですが、ためしにVisibleやEnableを参照しようとすると、(Form1を表示していない場合)その時点でForm1がロードされ、表示されてしまいます。 そこで、任意のフォームが現在表示されているかどうかを知るプロパティや関数はありますでしょうか? ご存知の方、ご教授お願いいたします。

  • フォームの設定について

    ソフト表示画面のサイズを300*480に収めたいのですがどのように設定すればいいのか教えてください。また、2つのForm、Form1とForm2 を同時に起動してForm1を上側にForm2を下側にと表示させたいのですが、どのようにすればよろしいか教えてください。ちなみに表示するときは、Form1を起動状態にして、あるボタンを押したらForm2を起動という形にしたいのですが、どのようにすればよろしいですか?