把原来的窗体隐藏,把新的窗体表现出来   
例如你现在打开的是Form1 
还有一个窗体是Form2
frm1.hide();
form2 frm2=new  from();
frm2.show();

解决方案 »

  1.   

    如果你想弄类似登录窗体和主界面的窗体,可以先加载主窗体,然后在主窗体的load事件里添加打开登录窗体,如果登录窗体成功继续加载后面代码,如果登录没满足要求就一直在登录窗体,或者程序退出
      

  2.   

    可以在Form的Closed事件里边写你的需要加载另外的窗体的逻辑
      

  3.   

    private Form2 f2;
                private Form3 f3;
                private void button1_Click(object sender, EventArgs e)
                {
                    f2 = new Form2();
                    f2.Show();
                }
                private void button2_Click(object sender, EventArgs e)
                {
                     f3 = new Form3();
                     f2.Close();//关闭F2
                     f3.Show();
                }
      

  4.   

    frm1.hide();
     form2 frm2=new  from();
     frm2.show();
      

  5.   

    点解决方案资源管理,里面有个Program.cs类,
     点开它,在Main方法里有这样一行代码 Application.Run(new Form1()); 
    这是一个系统的静态类Application的一个Run方法,为了实现程序第一个启动的的程序,里面写的 new Form1() 
    就是启动了一个Form1的对象,这也就是每次我们程序点调试时候会第一个弹出Form1窗口的原因。 为了实现你提到的问题,我们可以把
    Application.Run(new Form1()); 
    发放里的new Form1();给去掉,
    然后在其前面手动把Form1给Show出来;
    Program这个类的代码改成如下: 
    using System; 
    using System.Collections.Generic; 
    using System.Windows.Forms; 
    namespace WindowsApplication1 { 
    static class Program { 
    /// /// 应用程序的主入口点。 
    /// [STAThread] static void Main()
     { 
    Application.EnableVisualStyles();
     Application.SetCompatibleTextRenderingDefault(false);
     Form1 f1=new Form1();
     f1.Show(); 
    Application.Run(); 



    这样就可以解决你说的问题了 不过this.Hide();是隐藏了这个窗口,而不是关闭;
      

  6.   

    我大一的时候做过一个类似的,不过我那时候没想到三楼的办法,我是添加了个主菜单新进程,然后登陆窗口那边的退出用的Application.ExitThread();退出当前线程上的所有消息循环,并结束当前线程上所有窗口,这样就不会发生你退出登陆窗口之后主菜单自动显示出来的事了,不过推荐三楼的做法
      

  7.   

        
    Form1改成要打开的窗体
    Thread ShowMainThread = new Thread(new ThreadStart(delegate { System.Windows.Forms.Application.Run(new Form1()); }));
                    ShowMainThread.ApartmentState = ApartmentState.STA;
                    ShowMainThread.Start();
    关闭当前窗体
           this.Close();
                    this.Dispose();
      

  8.   

    static class Program
    {
    //直接上代码,不知道是否能实现你的要求
    public static ApplicationContext AppContext;
    public static bool isClose = false;
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Form1 frm = new Form1();
    AppContext = new ApplicationContext(frm);
    AppContext.ThreadExit += new EventHandler(AppContext_ThreadExit);
    Application.Run(AppContext);
    } static void AppContext_ThreadExit(object sender, EventArgs e)
    {
    if (!Program.isClose)
    {
    Form2 frm = new Form2();
    frm.FormClosed += new FormClosedEventHandler(frm_FormClosed);
    AppContext.MainForm = frm;
    frm.ShowDialog();
    }
    } static void frm_FormClosed(object sender, FormClosedEventArgs e)
    {
    Program.isClose = true;
    }
    }