如题,我的意思是下面这样
Form1 form1 = new Form1();
Application.Run(form1);Form1.class里
Form2 form2 = new Form2();
form2.ShowDialog();
Form2.Class里
Form3 form3 = new Form3();
form2.Owner = this;当关闭Form2的时候,Form3的FormClosed事件不被响应。如果
Form1.class里
Form2 form2 = new Form2();
form2.Show();
      ~~~~~~~~
的话,
关闭Form2的时候,Form3的FormClosed事件被响应。有人知道是什么原因么?

解决方案 »

  1.   

    看看事件添加的位置是否正确,是不是在ShowDialog之后添加的
      

  2.   

    Form2.Class里
    Form3 form3 = new Form3();
    form2.Owner = this;2or 3?
      

  3.   

    ShowDialog 是阻塞的, Show 是非阻塞的ShowDialog 时 后面的代码不会执行 直至 ShowDialog 有结果返回而   Show  则会继续执行后面的代码
      

  4.   

    程序很简单,我就想把aaaaaa弹出来。public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                Form2 f2 = new Form2();
                f2.Owner = this;
                f2.ShowDialog();
            }
        }public partial class Form2 : Form
        {        Form3 f3 = new Form3();
            public Form2()
            {
                InitializeComponent();
            }        private void Form2_Load(object sender, EventArgs e)
            {
                f3.Owner = this;
                f3.ShowDialog();
            }
        }public partial class Form3 : Form
        {
            public Form3()
            {
                InitializeComponent();
            }
            private void Form3_FormClosed(object sender, FormClosedEventArgs e)
            {
                MessageBox.Show("aaaaa");
            }
        }
      

  5.   

    对不起,是下面这个,我就想在关闭form2的时候,把form3的aaaaaa弹出来。public partial class Form1 : Form
      {
      public Form1()
      {
      InitializeComponent();
      }  private void Form1_Load(object sender, EventArgs e)
      {
      Form2 f2 = new Form2();
      f2.Owner = this;
      f2.ShowDialog();
      }
      }public partial class Form2 : Form
      {  Form3 f3 = new Form3();
      public Form2()
      {
      InitializeComponent();
      }  private void Form2_Load(object sender, EventArgs e)
      {
      f3.Owner = this;
      }
      }public partial class Form3 : Form
      {
      public Form3()
      {
      InitializeComponent();
      }
      private void Form3_FormClosed(object sender, FormClosedEventArgs e)
      {
      MessageBox.Show("aaaaa");
      }
      }
      

  6.   

    你这个代码 form3都没有显示,怎么会触发关闭的事件虽然反射可以实现,但你还是先想清楚要做什么
      

  7.   

    如果
    Form1.class里
    Form2 form2 = new Form2();
    form2.Show();
      ~~~~~~~~
    的话,
    关闭Form2的时候,Form3的FormClosed事件被响应。
    而form2.ShowDialog();
    关闭Form2的时候,Form3的FormClosed事件不被响应。
      

  8.   


    放在Closing事件中比较好点。
     private void Form3_FormClosing(object sender, FormClosingEventArgs e)
      {
      MessageBox.Show("aaaaa");
      }
      }