本来创建工程的时候 vs自动创建了MainFrm窗体 ,后来因为要登陆 加一个loginfrm窗体
问题:
1、loginfrm里我已经验证完用户名密码后,想关闭loginfrm  显示mainfrm  结果直接退出程序 
  MainFrm mainfrm = new MainFrm();  
  mainfrm.ShowDialog();
  this.Close();//loginfrm.close();2、 后来我就直接把this.Close();改成this.hide();  等我想关闭mainfrm 退出整个程序的时候 结果发现不行loginfrm还没有关闭,请问这问题怎么解决

解决方案 »

  1.   

    相反了把,应该是在mainform里面
    Loginform frm = new Loginform();   
      frm.ShowDialog(this); 
      frm.dispose();//lo
      

  2.   

    你看看类Program里面static class Program
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                FrmLogin newFrm = new FrmLogin();            if (newFrm.ShowDialog() == DialogResult.OK)
                    Application.Run(new FormMDI());
            }
        }
    DialogResult.OK  为标志位,如果DialogResult.OK就可以登录
    如果为DialogResult.Cancel  则无效这些都是在你的Login 里面写的判断
      

  3.   

    一般是在program.cs里先启动login,登录成功,login退出再显示main。
      

  4.   

    FormLogin frm = new FormLogin();
                if (frm.ShowDialog() == DialogResult.OK) Application.Run(new Form1());
                else Application.Exit();
      

  5.   

    当然了LoginForm是主窗口,应该关闭这一个
      

  6.   

    因为static void Main()启动的是登陆窗体
    在static void Main()里启动主窗体,
    然后:
    1. 先显示登陆窗体再显示主窗体
       在Load事件写
       FormLogin frm = new FormLogin();
       frm.ShowDialog(this);
       if (!frm.IsSuccess)
       {
          Application.ExitThread();
          return;
       }   //记录登陆ID等
       ......
    2. 显示了主窗体,再弹出登陆窗体,在Shown事件写,代码一样。
      

  7.   

    frm.IsSuccess    //IsSuccess是你自己定义的一个属性,登陆成功时设为True