form1是登陆窗口,我用this.close()关闭它然后打开form2.show(),但是this.close()却让整个程序就退出了。正确手法应该怎样做呢?

解决方案 »

  1.   

    可否考虑form2是主窗口,form1为模态登录窗口
    这样关闭form1之后可以操作form2
      

  2.   

    可以使Form1隐藏,代码如下:
    this.Hide();
    new Form2().Show();
      

  3.   

    对于有Splash--你所指的Form1的窗口,一般可以考虑在该窗口中开个线程做你所有要初始化的事情,初始化成功则运行主窗口。 而在主窗口的加载事件里则对Splash的状态进行判断即可。
      

  4.   

    ///////////////在程序入口文件(一般是Program.cs)中这样写////////////
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    namespace CCRegister
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                //*****主要看下面************
                //你的登陆窗口frmLogin
                Form login = new frmLogin();
                if (login.ShowDialog() == DialogResult.OK)
                {
                    //你准备新打开的窗口frmMain
                    Application.Run(new frmMain());
                }
            }
        }
    }
    //////////////在你的登陆窗口验证成功的代码后面写///////
      
    this.DialogResult = DialogResult.OK;//成功//相信可以解决你的问题
      

  5.   

    form2 myForm = new form2();
                    
    myForm.ShowDialog();

    this.Close();
      

  6.   

    我一般是先隐藏当前form,然后show第二个form,然后close第一个form
      

  7.   

    经我验证,pinglan() 的方法确实可行,lijgame(五月)等的方法存在一定的问题,有的时候能引起异常,例如确定按钮如果同时有mousemove\mouseleave\mousedown\mouseup事件时,其中mouseup用来调出form2,就会出现异常这是小弟刚试过的,如果说得不对,请各位原谅,因为我刚学
      

  8.   

    在winform内,新form是调用一个生成一个,因为winform各form之间是独立的!所以你如果不是做登陆操作就可以把第一个先隐藏,然后在打开第二个!再关闭第一个!