- - PR -
sub mainで起動したフォームを終了するとソフト全体が終了します。
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-11-18 13:22
VB.NETでsub mainで宣言して以下のようにログイン画面を起動します。
'初期起動モジュール Sub main() Application.Run(New frmLogIn()) Exit Sub end sub このあとログイン画面でログイン認証が終わった後に Me.closeでログイン画面を終了し、 次の画面を立ち上げたところ sub mainの処理の続きが走ってしまい、 ソフトが終了しました。 sub mainで起動したフォームが終了すると ソフト全体が終了するのでしょうか? また、これの対処法はないでしょうか? バックグラウンドでフォームをHideにするぐらいしか思いつきませんでした。 教えて下さい。 |
|
投稿日時: 2004-11-18 15:13
あまりWindowsFormを探ったことが無いのですが...
> sub mainで起動したフォームが終了すると > ソフト全体が終了するのでしょうか? Application.Run メソッド (Form) http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemWindowsFormsApplicationClassRunTopic3.asp > このメソッドは、 Closed イベントの mainForm パラメータにイベント ハンドラ > を追加します。 > イベント ハンドラは、 ExitThread を呼び出して、アプリケーションをクリーン > アップします。 とのことなんで、FormをCloseするとメッセージループが終わるんでしょう。 > フォームをHide 簡単な方法として、 はじめに、メインとなるフォームを呼び出してはいかが? そのメインのフォームからログインフォームを出すとか。 _________________ たつごろー codeseek こみゅぷらす |
|
投稿日時: 2004-11-18 15:17
特定の「メインフォーム」を置きたくない場合には、
Application.Run に ApplicationContext を渡します。 |
|
投稿日時: 2004-11-18 15:39
ApplicationContextを使用して、
以下のようなソースに変更しました。 '初期起動モジュール Sub main() frmLogIn.show Application.Run(New ApplicationContext()) Exit Sub end sub フォームを与えず、起動させましたが、 フォーム(frmLogIn)で右上の×ボタンにてソフトを終了すると 今度はバックグラウンドでソフトのプロセスが残るようになりました。 フォーム終了時に完全にソフトを終了するように コードを書かないとだめなのでしょうか? [ メッセージ編集済み 編集者: やっくん 編集日時 2004-11-18 15:40 ] |
|
投稿日時: 2004-11-18 16:09
Application.Run メソッド (ApplicationContext) http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemWindowsFormsApplicationClassRunTopic2.asp によると Exit または ExitThread が呼び出されるまで、または ThreadExit イベントがコンテキスト オブジェクトで発生するまで、このメッセージ ループは実行されます。 だそうですので、ExitかExitThreadすればいいんではないかと想像します。 _________________ たつごろー codeseek こみゅぷらす |
1
