假设我现在有一个主窗体,通过点击菜单的某一项,打开一个新窗体,然后隐藏这个主窗体。比如:private void ToolStripMenuItem_Click(object sender, EventArgs e)
        {   
            This.Hide();
            Form2 form2 = new Form2();
            form2.Show();
        }1、当用户关闭这个新窗体之后,我怎么让这个隐藏的主窗体重新显示出来?2、我曾经想做成不弹出新窗体,而是点击菜单以后将新窗体作为子窗体创建。但是当我关闭掉这个子窗体,然后创建另一个子窗体时,新创建的子窗体的位置不再是紧贴住我的父窗体。这是怎么回事?   之前只涉及到WebForm方面,还望解答这两个初学者的问题。谢谢!

解决方案 »

  1.   

    1.子窗体保持父窗体的引用,在Closing事件,再执行父窗体的Show方法,使之显示。
    2.紧贴住父窗体?是什么意思?
      

  2.   

    1.子窗体保持父窗体的引用,在Closing事件,再执行父窗体的Show方法,使之显示。-------------------------------------------能详细一点吗?  如何保持对父窗体的引用?
      

  3.   

    第一种方法,改写子窗体的构造函数,使之能接受类型为父窗体类的参数,在父窗体的方法中,创建子窗体时,将代表自身的this传入,在子窗体的构造函数中保存下来。
    第二种方法,在子窗体中定义一个属性,类型为父窗体类,在父窗体中创建子窗体之后,设置此属性为this,然后再显示子窗体。当然还有其他方法,不过这是我倾向于使用的方法。
      

  4.   

    我是尝试用Mdi方式,但是我遇到的问题是:当用户点击另外一个菜单项时,我怎么关闭当前打开的子窗体,然后创建新窗体?新建的窗体似乎是叠放在一起的样子...
      

  5.   

    private void ToolStripMenuItem_Click(object sender, EventArgs e)
    {   
        this.Hide();
        new Form2().ShowDialog();
        this.Show();
    }