C# MDI模式下关闭父窗体时子窗体中的提示如何让它不弹出?
父窗体的Closing事件和子窗体的Closing先执行的是子窗体的最后执行父窗体的
这样关闭父窗体的时候 先弹出子窗体的提示,这里就是想关闭父窗体时只弹出父窗体的提示,子窗体不提示

解决方案 »

  1.   

    看看Closing事件中的e.CloseReason如果是主Form关闭的
    他是FormOwnerClosing
      

  2.   

    同意楼上的
    在子Form的Closing事件中作判断就可以了
      

  3.   

    请问一下你们用的是VS2003吗?
    我怎么在Closing事件中e.CloseReason就是.不出来CloseReason呢
    哪位大哥能给整段代码看看啊
      

  4.   

    protected override void OnFormClosing(FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.FormOwnerClosing)
        {
            base.OnFormClosing(e);
            return;
        }
        else
        {
            //弹出提示消息
        }
    }
      

  5.   

    03里面是比较麻烦
    你可以监视你主窗口的消息protected override void WndProc(ref Message m)
    {
      if (m.Msg == 0x0112 && (int)m.WParam == 0xF060) // WM_SYSCOMMAND = 0x0112, SC_CLOSE = 0xF060
      {
        //这里设置全局变量
        return;
      }  base.WndProc(ref m);
    }然后再子窗体的Closing事件中判断
      

  6.   

    这段代码直接拷贝到主窗体中就可以了
    然后你点主窗体的关闭按钮的时候就会执行到if里面这个是Windows的消息
      

  7.   

    还是不行啊 把代码放到主窗体运行 程序就会 每次都执行if (m.Msg == 0x0112 && (int)m.WParam == 0xF060) // WM_SYSCOMMAND = 0x0112, SC_CLOSE = 0xF060 
    剩下的就没反应了
      

  8.   

    当然每次都会执行
    但是不是每次都会执行if里面的东西~~~~~我是让你在if里面设置全局变量
      

  9.   

    假设你有个全局变量bool isMainFormExist = false;protected override void WndProc(ref Message m) 

      if (m.Msg == 0x0112 && (int)m.WParam == 0xF060) // WM_SYSCOMMAND = 0x0112, SC_CLOSE = 0xF060 
      { 
        isMainFormExist = true; 
      }   base.WndProc(ref m); 
    } 然后再子窗体Closing事件里面判断isMainFormExist
    private void Closing()
    {
        if (!isMainFormExist)
        {
            //弹出提示
        }
    }