• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C# フォームを閉じてもプログラムが終了しない)

C# フォームを閉じてもプログラムが終了しない

このQ&Aのポイント
  • C#の初心者です。以下のプログラムを作りたいと思っていますが、フォーム1を閉じてもプログラムが終了しません。どこかおかしな部分があると思っています。追加しないでもプログラムを終了する方法を教えてください。
  • 作りたいプログラムは、Form1のbutton1をクリックすると新しいForm2が作成され表示され、Form2を閉じるとForm1が表示されるというものです。
  • Form1にはFormClosingイベントがあり、Application.Exit()を追加することでプログラムを終了させています。

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

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.2

Form2を表示したForm1と Form2が表示するForm1はインスタンスが異なる (Hideで隠れたForm1のインスタンスではなく、新しくForm1のインスタンスを作ってる) ということは理解できてますか?

noname#154688
質問者

お礼

前略 ・さっそく回答ありがとうございます。 ・以下のプログラムのように、Form1の参照をForm2にコンストラクタ生成時渡すことによる方法に変更した結果 Form1を閉じるときにApplication.Exit()をFormClosingイベントに追加しなくともプログラムが終了できるようになりました。  アドバイス大変参考になりました。ありがとうございます。 //Form1.cs ----------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace formClose { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form2 = new Form2(this); //Form2にForm1の参照を渡す form2.Show(); //フォーム2を表示 this.Hide(); //フォーム1を非表示 } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // Application.Exit(); //アプリケーション終了 } } } //Form2.cs --------------------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace formClose { public partial class Form2 : Form { Form1 f1; public Form2(Form1 form1) //Form1の参照を受け取る { InitializeComponent(); f1 = form1; //form1を代入 } private void button1_Click(object sender, EventArgs e) { f1.Show(); //フォーム1を表示する this.Hide(); //フォーム2を非表示にする } } } 以上

その他の回答 (1)

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

>>Application.Exit()を追加しないと フォーム1で "X"(閉じる)をクリックしても(フォームは非表示になりますが)プログラムが終了しません。プログラムでどこかおかしな部分があると思っています。 フォームを閉じても終了しないというのは、正常動作ではないですか?

noname#154688
質問者

お礼

前略 ・さっそく回答ありがとうございます。  ご指摘のとうりと思い本稿に質問した次第です。 以上