父窗体Form1:
        private void button2_Click(object sender, EventArgs e)
        {
            
            Form2 v = new Form2();
            v.ShowDialog();
            this.Hide();
            if (v.ShowDialog() == DialogResult.OK)
            {
                this.Show();
            } 
            
        }
子窗体Form2:       public Form2()
        {
            InitializeComponent();
           
        }
      private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.DialogResult = DialogResult.OK;             this.Close();  //******此处报错********            
        }
报错信息:未处理 System.StackOverflowException请问:应该如何改动?

解决方案 »

  1.   

    Form2_FormClosing中有调用了this.Close,会继续触发Form2_FormClosing,死循环,去掉this.Close
      

  2.   

    屏蔽掉,你在窗体正在关闭的事件中,调用关闭方法,逻辑有问题,而this正是指的是Form2,如此看来该操作无任何意义
      

  3.   


    我准备在Form2中加一个button,关闭Form2,请问应如何?
      

  4.   

    子窗体Form2:        private void button2_Click(object sender, EventArgs e)
            {
                  this.DialogResult = DialogResult.OK; 
                  //******如何关闭本窗体?******
            }
      

  5.   

    即使不关闭Form2,隐藏也行啊。
      

  6.   

    放在按钮点击事件里就没有问题
      private void button2_Click(object sender, EventArgs e)
            {
                  this.DialogResult = DialogResult.OK; 
                  //******如何关闭本窗体?******
                  this.Close();
            }
      

  7.   


    也就是说,放在其他事件里不行?
    比如
    if (a==2)
    {
    this.close
    }
      

  8.   

    也就是说,除了button事件,无法使用代码关闭子窗体?