2

別のフォームへのリスニング イベントでスタックしました。

Form2 を閉じようとしても、Form1 では何も起こりません。Form2 が閉じたときに Form1 で何かをしたい。

これがForm1の私のコードです

public partial class Form1: Form
        {
             public Form1()
            {
                InitializeComponent();

                Form2 frm2= new Form2();
                frm2.FormClosing += new FormClosingEventHandler(frm2_FormClosing);
            }

            void frm2_FormClosing(object sender, FormClosingEventArgs e)
            {
                throw new NotImplementedException();
            }
4

2 に答える 2

2

form2 の新しいインスタンスを作成し、その終了イベントをリッスンしますが、投稿されたコードからそれを表示することはありませんか? 何が欠けているのかわかりませんが、うまくいくはずだと思うものはうまくいきます-つまり:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm2 = new Form2();
            frm2.FormClosing += frm2_FormClosing;
            frm2.Show();
        }

        void frm2_FormClosing(object sender, FormClosingEventArgs e)
        {
            MessageBox.Show("form 2 closed");
        }
    }
于 2013-04-14T00:35:03.963 に答える
2

イベントを実装しているオブジェクトを表示する必要がありますFormClosing。作成している新しいオブジェクトはコンストラクターにあるため、 frm2 は表示しているフォームではないと想定しています。つまり、イベントを処理していません。

public Form1()
{
    InitializeComponent();

    Form2 frm2 = new Form2();
    frm2.FormClosing += frm2_FormClosing;
    frm2.Show();    
}

void frm2_FormClosing(object sender, FormClosingEventArgs e)
{
    MessageBox.Show("Form2 is closing");
}
于 2013-04-14T00:16:06.390 に答える