我在一个solution里有一个 windowsapplication1,mainform,然后通过解决方案管理器把另一个windowsapplication2添加进来, windowsapplication2 里面有一个form2.
想实现的是在 windowsapplcation 1 的mainform上按 一个 button,显示另一个 windowsapplication2 里的form2, 原先的mainform 隐藏。请各位大侠指点。 

解决方案 »

  1.   


    void button_Click(object sender, EventArgs e)
    {
    this.Hide();
    windowsapplication2.Form2 f = new windowsapplication2.Form2(); //windowsapplication2换成Form2的命名空间
    f.Show();
    }
      

  2.   

    谢谢,我刚试验了是OK,但是我把 f show了后,再关闭, mainform 没有显示出来,我试了该form2 里的代码,但是form2里不认mainform,这个怎么处理呢?
      

  3.   

    这样试试
    f.Show();改成f.Show(this);
    然后在Form2中加上protected override void OnClosed(EventArgs e)
    {
        if (this.Owner != null)
        {
    this.Owner.Show();
        }
        base.OnClosed(e);
    }
      

  4.   

    太谢谢你了。。如果能有注释就好了,  anyway, 十分感谢, 散分了。 呵呵。
      

  5.   

    f.Show(this)的意思f作为当前窗体的子窗体来显示。Form2的关闭事件中,this.Owner就获取到了当前窗体的父窗体(也就是MainForm),然后把它显示出来。
    如果不在Form2中加代码,所有事件都在button的click事件中写也可以,这样:void button_Click(object sender, EventArgs e)
    {
        this.Hide();
        windowsapplication2.Form2 f = new windowsapplication2.Form2(); //windowsapplication2换成Form2的命名空间
        f.FormClosed += new FormClosedEventHandler((s1, e1) => 
        {
    this.Show();
        });
        f.Show();
    }总之就是在Form2的Closed事件中添加显示MainForm的代码。