注册一个事件namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        Form2 form2 = new Form2();
        public Form1()
        {
            InitializeComponent();
            form2.FormClosed += OnForm2Closed;                //<---
            form2.Show();
        }        public void OnForm2Closed(object sender, FormClosedEventArgs e )
        {
            MessageBox.Show( "form2 closed" );
        }
        //...
    }

解决方案 »

  1.   

    不错,不过还有一个疑问,就是如何传递参数呢?就像sendmessage那样
      

  2.   

    不错,不过还有一个疑问,就是如何传递参数呢?
    class Form2
    {
      //...
      public string GetUserOption() { return userOption; }                       //<----
      string userOption;
    }class Form1
    {
        public void OnForm2Closed(object sender, FormClosedEventArgs e )
        {
            MessageBox.Show( "form2 closed" + form2.GetUserOption() );           //<----
        }
    }...就像sendmessage那样
    最好不用,也没必要用。
      

  3.   

    在窗体重注册FormClosing或FormClosed事件,不过也可以参考一下这里,
    http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx
      

  4.   


    public delegate void FormCloseHandel(object sender, FormEventArgs e);
    public class FormEventArgs : EventArgs
    {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public FormEventArgs(string name)
        {
            this.name = name;
        }
    }public class FormEvent
    {
        public event FormCloseHandel formCloseEvent;    public void OnCloseForm(FormEventArgs e)
        {
            if (this.formCloseEvent != null)
            {
                formCloseEvent(this, e);
            }
        }
    }用的时候可以这样:
    比如在Form2的Close事件里写
                  FormEvent f = new FormEvent();
                f.formCloseEvent += new FormCloseHandel(f_formCloseEvent);
                f.OnCloseForm(new FormEventArgs("aa"));        void f_formCloseEvent(object sender, FormEventArgs e)//事件调用的方法
            {
                Console.WriteLine(e.Name);
            }
    FormEventArgs 是一个事件数据类根据再见的需要写