DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームが開きません

環境/言語:[Windows2K, Framework1.0 .NET2003]
分類:[.NET]

はじめて投稿します。

現在、,NET2003で開発しているのですが、
とても初歩的なことでつまづいています。

あるフォームから別のフォームを開こうとしても開かないのです。
正確に言えば、開いてはいるみたいなのですが、すぐに閉じられて
終了してしまいます。

Private Sub btn_Start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Start.Click

Dim F As New MainMenu
F.Show()
Me.Close()
End Sub

コードはこれだけしか書いていません。

何が原因なのかさっぱりわかりません。
どなたか教えて頂けますか?
真冬さん
スタートアップ時のFormを閉じる、
> Me.Close()
が原因です。
コメントアウトしてみてください。
■No22935に返信(きいよさんの記事)
> 真冬さん
> スタートアップ時のFormを閉じる、
>> Me.Close()
> が原因です。
> コメントアウトしてみてください。
>
>

きいよさん、お返事ありがとうございます。
コメントアウトしてみたら動きました。
ただ、最初に表示してあるフォームは、完全に閉じておきたいのですが
その場合、Me.Close()では、ダメなのでしょうか?
■No22936に返信(真冬さんの記事)
> ただ、最初に表示してあるフォームは、完全に閉じておきたいのですが
> その場合、Me.Close()では、ダメなのでしょうか?

「閉じる」ためのメソッドは確かにCloseです。
ただ、サンプル上のコードだと、作ったMainMenu型のインスタンス = f
はいわば「Me」の中にある状態で、「Me.Close()」してしまうと「f」ごと閉じてしまうことになります。
(Meが「親」、fが「子」と表現されることもあります。)
そのため、一瞬表示(f.Show())された後に両方とも閉じて(Me.Close())しまったのです。

私は使ったことがないのですが、回避策の1つにMe.Visible = falseとする手があります。
ただ、これだと完全にアプリケーションを終了させる方法が少々面倒なことに…。。(どこかのタイミングでまた表示させて終了させないといけないので)
真冬さん

簡単にいうと、
.Netでは、最初に起動したメソッドが、終了した時点でアプリケーションとして
も終了していまいます。
カドルドエグさんが書かれているようにme.Visible=Falseや
me.Hideで非表示にする方法が簡単です。

今回の場合、スタートアップフォームから別画面に展開するイメージでしたら、
Private Sub btn_Start_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Start.Click
Dim frmNew As New Form2
Me.Hide()
frmNew.ShowDialog()
Application.Exit()
F.ShowDialog()
End Sub
フォームを連続して表示したい(つまり、Hideしたフォームは2度と表示しない)ということであれば、

フォームを連続して表示する
http://dobon.net/vb/dotnet/form/showforminsequence.html

の方も参考にしてください。
きいよさま、カドルドエグさま、管理人さま、有難うございました。
『フォームを連続して表示したい(つまり、Hideしたフォームは2度と表示しない)』を参考に指せて頂き、うまく動作いたしました。

VB6.0で作ったソフトのバージョンアップ作業だったため
最初から躓いてしまい、途方に暮れていたところでしたので
助かりました。
また、御相談させて頂くかと思いますが、その時はよろしくお願いいたします。
解決済み!
  • 題名: 【報告】この投稿はマルチポストです
  • 著者: (報告)
  • 日時: 2008/09/10 9:39:26
  • ID: 22983
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
2008/09/10(Wed) 09:39:59 編集(投稿者)

この投稿はマルチポストです。

●マルチポストされている場所
http://www.moug.net/faq/viewtopic.php?t=32155

----------
この掲示板ではマルチポストが禁止されています。詳しくは、「書き込みのマナーについて」をお読みください。

●書き込みのマナーについて
http://dobon.net/vb/bbs/index.html
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板