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

Showについて

  • 題名: Showについて
  • 著者: 城
  • 日時: 2004/10/15 23:16:12
  • ID: 6736
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[VB.NET2003]
分類:[.NET]

こんばんは。初心者なのでくだらない質問になると思いますが・・・

AとBというフォームがプロジェクト内に存在してて起動時にはAを表示。ボタンを押すことでBのフォームを表示&Aのフォームクローズをしたいのですがどのようにすればよいでしょうか?

Aフォームで以下のように書くと

Dim frm As New B
frm.Show()
me.Close

なぜかBフォームまで閉じちゃいます・・。
■No6736に返信(城さんの記事)
> こんばんは。初心者なのでくだらない質問になると思いますが・・・
>
> AとBというフォームがプロジェクト内に存在してて起動時にはAを表示。ボタンを押すことでBのフォームを表示&Aのフォームクローズをしたいのですがどのようにすればよいでしょうか?
>
> Aフォームで以下のように書くと
>
> Dim frm As New B
> frm.Show()
> me.Close
>
> なぜかBフォームまで閉じちゃいます・・。

Aフォームがメインフォーム(プロジェクトのプロパティでスタートアップに指定しているフォーム)だからでしょう。

スタートアップに指定しフォームを閉じるとアプリケーションが終了します。
スタートアップにはSub Mainを指定して、
Sub Mainに
- フォームAを表示する処理
- Application.Run()
を記述し、
アプリケーションを終了したいときにはApplication.Exit()を呼ぶようにすればよいと思います。
ありがとうございます。思ったようにできました。
しかしあらたな問題点が・・・・

Aフォームの×ボタン(閉じるボタン)を押された時アプリケーションが閉じられません。
×ボタンを押したときのイベント、または×ボタンを無効化か削除する方法はあるますか?
■No6742に返信(城さんの記事)
> Aフォームの×ボタン(閉じるボタン)を押された時アプリケーションが閉じられません。
> ×ボタンを押したときのイベント、または×ボタンを無効化か削除する方法はあるますか?

フォームが閉じられるときには
Closing ⇒ Closedの順でイベントが発生します。
このどちらかにApplication.Exit()を記述すれば、アプリが終了します。

×ボタンを無効化する場合は、フォームのWndProcメソッドをオーバーライドし、
m.Msg = &H112 かどうかを判断すればOKです。
詳しくは以下のページを参照して下さい。
『フォームが閉じられる時その原因を知る』
http://dobon.net/vb/dotnet/form/unloadmode.html

×ボタンを削除する場合は、フォームのContorolBoxプロパティをFalseにして下さい。
但し、最大化、最小化ボタンも消えてしまいますので、
上記方法で無効化したほうがいいでしょう。

また、Win32APIを使って×ボタンのみ無効化することも可能です。
こちらはWndProcメソッドのオーバーライドする方法と違って、
見た目的にも×ボタンが無効化されているのを確認できますが、
上記方法で十分でしょうし、Win32APIを無理に使う必要もないでしょう。
ありがとうございました!できました!
皆さんほんとにありがとうございました!
  • 題名: Re[5]: Showについて
  • 著者: 城
  • 日時: 2004/10/16 9:28:45
  • ID: 6751
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
すいません。解決にするのを忘れてました。
解決済み!

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