如果有平常两个窗体,form1 form2
form1.Hide();
form2.ShowDialog();
form1.Close();
form1的资源旧可以被释放,在MDIForm里为什么就不行呢,怪!!!!

解决方案 »

  1.   

    MDI窗体中,子窗体HIND()后,不能CLOSE()的问题.
    在MDI窗体的菜单事件里:
    private void menuItem1_Click(object sender, System.EventArgs e)
    {
    Form2 form2=new Form2();
    form2.MdiParent=this;
    form2.Show();
    }在form2的一个按钮事件中:
    private void button1_Click(object sender, System.EventArgs e)
    {
    this.Visible=false;
    this.Close();//不能关闭form2
    }
      

  2.   

    换句话说,就是执行上述代码后,form2不能被close();
    但如果在close();前面加上this.show();form2就能被close();
    这是为什么?
      

  3.   

    我试验了一下,结果如你所说。我对MDI不太了解,我先研究一下。
      

  4.   

    我将MDI窗体Hide后,再关闭它时,发现窗体没有接收到WM_CLOSE消息???,如果不隐藏窗体,它就可以接收到WM_CLOSE消息。为什么???(微软好像没有公开MDI的内部机制)代码如下,你试一试:
    public class Form2:Form
    {
    private void button1_Click_1(object sender, System.EventArgs e)
    {
    this.Hide();
    this.Close();
    }private void button2_Click(object sender, System.EventArgs e)
    {
    this.Close();
    }
    protected override void WndProc(ref Message msg)
    {
    if (msg.Msg== 0x0010)
    MessageBox.Show("");
    base.WndProc(ref msg);
    }
    }
      

  5.   

    我想用dispose()方法,释放窗体资源,但也不能收到WM_CLOSE消息!
    不知道用dispose()方法是否可行,感觉有点怪怪的
      

  6.   

    不是的,如果不是MDI窗体就可以接收,有兴趣可以试一下!
    这个问题虽然解决不料,帖子还是结了吧!