Form2 Frm = new Form2();
            Frm.Show();
            this.Close();
form1窗体上有一个按扭,点下的时候执行上述语句,结果所有窗体都关闭了,我想打开窗体2的同时关闭窗体1,该怎么做呢,HIDE是隐藏啊,不是关闭

解决方案 »

  1.   


    Form2 Frm = new Form2(); 
    Frm.Show(); 
    Form1 f1=new Form1();
    f1.Close();
    这样写个试试呢.
      

  2.   

    一个程序等于是一个主线程(form1),在该线程上添加出来的线程则为子线程(form2),在主线程关闭的情况下是不可能维持子线程的运行的,要么让form2成为另一个主线程,这样的话form1的关闭就不会影响到form2。或者不关闭主线程form1,只是hide。
      

  3.   

    HIDE隐藏后我再显示FORM1的话,是又打开了一个窗体1还是把隐藏的窗体1又显示出来了呢?楼上的朋友
      

  4.   

    声明Form2 Frm = new Form2(); 
    要在 form1 外声明
      

  5.   

    首先如果运行的时候你想把主窗体(也就是Main函数中创建的窗体、也叫启动窗体)关闭而保留子窗体这是不可能的,皮质不复,毛将焉存!!!!
    如果你想要这样的效果,哪么就需要3个窗体,Form1为主窗体,Form1上的按钮显示Form2,Form2上的按钮显示Form3,同时Form2窗体关闭。此时你的代码是可以用的,
      

  6.   

    简单的话将form1隐藏,而不是关闭.复杂一些的话,可以试一下多线程.
    先编个启动form2的方法:private void showForm()
            {
                Form2 frm = new Form2();
                frm.ShowDialog();
            }然后,调用它            System.Threading.Thread t = new System.Threading.Thread(new ThreadStart(showForm));
                t.Start();
                this.Close();
      

  7.   

    六楼说得对。。你可以试试在FORM 中Closing方法。
      

  8.   

    很简单的办法
    form1.cs
    form2 frm = new form2(this);
    frm.show();
    this.hide();form2.cs
    form1 frm = (form1)this.owner;
    frm.show();
      

  9.   


    Form1中
    private void button1_Click(object sender, System.EventArgs e)
    {
    this.DialogResult = DialogResult.OK;
    this.Close();}Form2中 onload事件
    Form1 frm = new frmLogin();
    if (frm.ShowDialog() != DialogResult.OK)
    {
      return;
    }
      

  10.   

    Form2 Frm = new Form2(); 
    Frm.Show();
    写在要关闭窗体的closeing方法里应该就可以,
    还有直接用hide是最省事的了吧
      

  11.   

    还是得看看form1是不是主窗体啊。要不就只能隐藏form1了呀不能关闭。原因,上面也有人说过了。
      

  12.   

    打开FORM2时隐藏FORM1,关闭FORM2后将FORM1显示