そのため、イベントをサブスクライブしていないようです。
コードは次のようになります。
フォーム1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 obj = new Form2();
obj.Show();
}
}
フォーム2
partial class Form2
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.SuspendLayout();
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(284, 262);
this.Name = "Form2";
this.Text = "Form2";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form2_FormClosing);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.Form2_FormClosed);
this.ResumeLayout(false);
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Form2 closed.");
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
MessageBox.Show("Form2 closing.");
}
}
すべてを Form1 内に保持することもできます (サブスクリプションに関する限り)。
フォーム1
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 obj = new Form2();
obj.Show();
obj.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Form2_FormClosing);
obj.FormClosed += new System.Windows.Forms.FormClosedEventHandler(Form2_FormClosed);
}
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
MessageBox.Show("Form2 closed.");
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
MessageBox.Show("Form2 closing.");
}
}
私が提供した 2 つのバージョンのコードはテスト済みで、問題なく動作します。しかし、あなたは私たちに 3 つの方法しか示しておらず、あなたが何をしていて問題を引き起こしているのかわかりません. デバッグ方法を学ぶことをお勧めします。たとえば、認識された「適切な」条件下でも、実行されないコードの前にブレーキ ポイントを設定します。その後、コードをステップ実行して、エラーが発生した場所を確認できます。この方法でどれだけ多くのバグをキャッチできるかに驚かれることでしょう。