none
アプリケーションを終了させたい RRS feed

  • 質問

  • Application.Run(MainForm);

    MainFormから始まる

    public class MainForm :Form

    {

          public MainForm()

         {

         Login lo = new Login();

         lo.ShowDialog();    

      }

    }

    public class Loing : Form

    {}

    とあった場合、Loginで×印で閉じたときアプリケーションを終了させるには

    どうしたらいいでしょう。

    LoginにMainFormをもたせてMainForm.Dispose()するとエラーが出てしまいます

    LoginからはじめるとLoginをDisposeするとアプリケーションがとまってしまうため上記のように

    してみました。代替案でもかまいませんので教えてください

    2006年7月4日 0:22

すべての返信

  • // コンストラクタでダイアログ表示は気持ち悪いですね……。

    Main 関数でログインの確認をして、キャンセルされたときはそのまま終了、成功したときだけ Application.Run を呼び出す、とか。

    2006年7月4日 0:29
  • igoigo さん、こんにちは。

     igoigo さんからの引用
    Loginで×印で閉じたときアプリケーションを終了させるにはどうしたらいいでしょう。

    MainForm は、まだインスタンス化する必要はないのに、インスタンス化しているから困っているのでしょうか。
    (MainForm という名前からして)

    何故 Load イベントで判断する?

    下記理由だとしても、適切な 「動機」 ではないと思います。

    LoginからはじめるとLoginをDisposeするとアプリケーションがとまってしまうため上記のようにしてみました。代替案でもかまいませんので教えてください

    ApplicationContext について調べてみると幸せになれるかもしれません。
    @IT あたりで検索すれば、おそらくヒットするかと思います。

    あっと、今回は、その必要もなさそうですね。
    メイン エントリ ポイントで Login を最初に表示してどうこうできますね。

    2006年7月4日 0:31
  • コンストラクタでダイアログを表示するのが気持ち悪いとのことですが、

    LoginしてからMainFormを表示させたいです。

    で、MainでLoginからはじめてしまうと、LoginをDispose()した場合にアプリケーションがしゅうりょうしてしまいます。

    Loginからはじめて、LoginをDisposeしてもアプリケーションを続行させるにはどう書いたらいいのでしょうか?

     

    2006年7月4日 0:34
  • ログイン画面をApplication.Runの画面にして、ログイン成功時に

    this.Hide()
    MainInstance.ShowDialog();
    this.Close();

    としてください。

    1つ目の画面をDisposeするのはApplication.Runの部分での作業です。

    #使っていない画面を隠しておくのが気持ち悪いかもしれませんが・・・そんなもんです。

    2006年7月4日 1:01
  • とりあえず

    MainFormからはじめてみて

    Login.Visible = false;

    としてみました。ちゃんと破棄されるのか心配ですが、なにか代替案あったら教えてください

    2006年7月4日 1:11
  • ありがとうございました。

    どうやらMainFormを閉じるとプロセスもちゃんと落ちてくれるようで助かりました。

    2006年7月4日 1:18
  •  igoigo さんからの引用

    とりあえず

    MainFormからはじめてみて

    Login.Visible = false;

    としてみました。ちゃんと破棄されるのか心配ですが、なにか代替案あったら教えてください

    この方法はプロセスのこっちゃうのでだめでした。上で教えてもらった方法でいくことにします。

    どうもありがとうございました

    2006年7月4日 1:19
  •  igoigo さんからの引用

    とあった場合、Loginで×印で閉じたときアプリケーションを終了させるには

    どうしたらいいでしょう。



    .NET Framework 2.0ならば、LoginのClosedイベントにSystem.Windows.Forms.Application.Exit()を記述してください。Exitメソッドは.NET Framework 2.0から仕様が変わり、既に開いているフォームを正しく閉じてからアプリケーションを終了します。
    2006年7月25日 17:00