Form1 启动 Form2,然后Form1 关闭我的代码 private void Form1_Load(object sender, EventArgs e)
{
   Form2 F2 = new Form2();
   F2.Show();
   this.close();
}但这样写,Form2显示一下,就都关闭了。换了一个写法 private void Form1_Load(object sender, EventArgs e)
{   this.close();
}private void FormOne_FormClosed(object sender, FormClosedEventArgs e)
{   Form2 F2 = new Form2();
   F2.ShowDialog();
}这样写 Form2显示了,但Form1不能关掉。这样咋写呢?Form1必须关闭,不要说什么隐藏。

解决方案 »

  1.   

    Form1是你的主窗体吧,你关闭主窗体就等于是关闭程序,那你还怎么开其他窗体啊
      

  2.   

    如果你的FORM1是启动窗体,那么你关掉FORM1你的整个程序就都退出了,如果不是,你可以用下面方法试试:
    FROM1中加一个public的方法 
    public void CloseForm1(){
       this.close();
    }form1调用form2的时候这样写
    private void Form1_Load(object sender, EventArgs e) 

      Form2 F2 = new Form2(this); 
      F2.Show(); 
    } 在form2的构造函数中加上一个参数
    public form2(Form1 form1)        
    {
        form1.CloseForm1();
    }
      

  3.   

    搂主可以这样
    不需要那么麻烦
    在program。cs 文件写上Application.Run(new Form1());
    Application.Run(new Form2());Form1窗体结束后 进入Form2 的消息循环 侧可以
      

  4.   

    如果你的FORM1是启动窗体,那么你关掉FORM1你的整个程序就都退出了,这句话点醒我了,那我先启动一个不可见的主窗体,然后让他去启动其他窗体。
      

  5.   

    private void Form1_Load(object sender, EventArgs e) 

      Form2 F2 = new Form2(); 
      F2.Show(); 
      this.Hide();//this.close(); 
    }
    改一下就好了!
      

  6.   

    不过补充一句 如果你Form2
    占用大量资源 效率就是问题了
    可以采用  延时加载等  技术
      

  7.   

    Form1是你的主窗体吧,你关闭主窗体就等于是关闭程序,那你还怎么开其他窗体啊
    private void Form1_Load(object sender, EventArgs e) 

      Form2 F2 = new Form2(); 
      F2.Show(); 
      this.Hide();//this.close(); 

    改一下就好了!
      

  8.   

    Form1不要关闭,给隐蒇了就成了