我运行Run 打开一个窗体from1 
在form1中,我想打开from2 ,关闭form1.但此时整个应用程序就结束了。
有没有关闭form1,打开from2,不让 应用程序就结束的方式?

解决方案 »

  1.   

    你可以把form1先隐藏
    因为主窗体是不能关闭的
    例如:
    this.close();
    Form2 form2=new Form2();
    from2.show();就可以了!!!
      

  2.   

    应该是:
    this.hide();
    Form2 form2=new Form2();
    from2.show();
      

  3.   

    //你可以把form1先隐藏
    //因为主窗体是不能关闭的这个原则在绝大多数面向对象的可视化开发工具中都适用
      

  4.   

    我现在有登录窗体 ,menu窗体,和其他窗体。
    想先进入登陆窗体,经过验证以后,进入menu窗体,再进其他窗体。
    难道我的登录窗体一直要保存吗?
      

  5.   

    请你首先确定哪个是主form,也就是Application.Run( );括号中的哪个。如果主窗口关闭将结束。但我不知道出于什么原因要用form1打开form2,关闭form1又结束程序。以下情况供参考:
    1 在form2打开后如果不想让用户看到form1,可以执行this.Hide();需要显示时执行show()
    2 在form2打开后如果担心用户关闭form1而是程序结束,在打开form2时用ShowDialog();方法
      

  6.   

    using System;
    using System.Windows.Forms;namespace WindowsApplication1
    {
    /// <summary>
    /// Summary description for entryPoint.
    /// </summary>
    public class entryPoint
    {
    /// <summary>
    /// the entry point of the application
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Form5 f5  = new Form5();
    f5.ShowDialog();
    if(f5.DialogResult == DialogResult.OK)
    {
    f5.Close();
    Application.Run(new Form6());
    }
    }
    }
    }//f5就是你的登陆窗口。  在f5中对DialogResult 进行控制久可以了。
      

  7.   

    捕获Form1的closing 事件
    然后加入如下代码:
    private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
    this.Hide();
    Form2 f2=new Form2();
    f2.Show();
    f2.Visible=false;
    f2.ShowDialog();
    //Application.Run(f2);
    }
    就OK;