我设置主窗体为隐藏,子窗体关闭事件写入!
DialogResult result = MessageBox.Show("是否退出?","提示",
                MessageBoxButtons.YesNo,MessageBoxIcon.Question);
            if (result == DialogResult.Yes)
            {
                  Application.Exit();
            }
            else
            {
                e.Cancel = true;
            }
当关闭的时候
它会出现2次提示退出!
如何解决?

解决方案 »

  1.   

                if (MessageBox.Show("是否退出?", "提示",MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    e.Cancel =false;
                }
                else
                {
                    e.Cancel = true;
                }
      

  2.   

    我前几天都遇到过相同的问题已经解决啦,提供代码给你参考一下!!private void Teacher_FormClosed(object sender, FormClosedEventArgs e)
            {
                DialogResult result = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    Application.Exit();
                }
                
            }
      

  3.   

    你的MessageBox.Show("是否退出?","提示", MessageBoxButtons.YesNo,MessageBoxIcon.Question);
    就是弹出一次。
    进行判断if语句的时候有出现一次,所以出现两次
      

  4.   

    第一次进入这个事件,是因为你点击了关闭按钮。第二次是Application.Exit();引起的
      

  5.   

    这样修改:if(e.CloseReason == CloseReason.UserClosing)
                {
                    if (MessageBox.Show("是否退出?", "提示",
                        MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        Application.Exit();
                    }
                    else
                    {
                        e.Cancel = true;
                    }
                }之所以加上这个判断,是因为当我们点击关闭按钮时,e.CloseReason的值是CloseReason.UserClosing,可是当执行到Application.Exit();这句时,它又一次触发了这个事件,但是这次e.CloseReason的值是CloseReason.ApplicationExitCall。所以这里加个判断,以避免再次进入if语句里面。
      

  6.   

    一样吗?我用的是e.Cancel=false,他用的是 Application.Exit()