有两个窗体form1和form2。
Program.cs中的入口是form1。。
form1中有个按钮,我要实现的是点击后关闭form1,打开form2。。代码我这样写的
form2 form = new for2();
form.show();
this.close();
点击后两个都关闭了,请问怎么样实现我要的效果??

解决方案 »

  1.   

    你可以先对form1隐藏,再显示form2
      

  2.   

    form2 form = new for2(); 
    form.show(); 
    this.close(); --->>>this.Hide();因为主窗口关闭时会结束主线程。
    而你的程序只有一个线程即主线程,故而主窗口一旦关闭即程序结束。上述Hide方式若不想用,可以在新线程中开启新窗口,这样关闭主线程程序仍不会终止。
    详情请查阅线程、windows编程等基础知识
      

  3.   

    隐藏的不好啊。。
    如果我再关闭form的话,那么form就一直是隐藏的,进程里面还会存在这个东西。。
      

  4.   

    也就是说你的form1并不是常用的窗口,那就不要做为windowsApplication的主窗口,而用form2作为applicaiton的主窗口,如果你要在form2出现前需临时要用到form1,那么可以用下面的代码:        [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Form1 form1 = new Form1();
                form1.ShowDialog();
                Application.Run(new Form2());
            }
      

  5.   

    可以这样解决:在Form1中这样定义
    Form2 f2=new Form2;
    Form2.f1=this;
    f1.visable=false;在Form2中这样定义
    Form1 f1;(全局的)Form2关闭时这样
    f1.show();
      

  6.   

    一般是将form1隐藏起来,再秀出form2