c#打开新窗体后关闭旧窗体

很多做winform的朋友在做登陆界面的时候总会遇到这个问题:

当用户输入正确,登陆的时候,new出一个想显示的窗口,然后show这个新窗口对象,在将当前窗体this,close掉

这一切看起来貌似合理正常,可就是没有显示,原因我相信大家马上就找到了,对就是父窗体都不在了(执行了close()方法了)

他里面的所有对象(当然包括你刚刚new出来的新的想要显示的登陆后的窗体了)都将不在了,此刻的应用程序就结束了

有没有办法呢?哈哈,当然有了,不然就不在这里写了,应该去microsoft的版块儿写了。

每个winform都有个program的类文件,这里显示了应用程序的入口Main函数,这里就会从一开始new出,并run起来你的第一个窗体

因此我们的办法就是在这里下功夫:

原理:

program类中application.run是依次执行的,也就是说如果有两句application.run()的话,另外一句要再这一句执行完返回以后才会执行,

那么,什么时候算执行完呢,窗体关闭,run里面参数所运行的窗体实例关闭的时候,就会返回了,所以我们有了办法;

直接看代码

  public  static  bool Login = false;//登陆成功后改为true就好
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new FrmCJ());
            
            FrmLogin l = new FrmLogin();//登陆窗体
            Application.Run(l);//运行
            if (Login)
            {
                FrmCJ CJ = new FrmCJ();//主窗体
                Application.Run(CJ);//运行
            }
        }
    }


 

这样就一目了然了吧,你只需要在你的登陆窗体成功的时候,将我们的Login变量赋值为true,就顺利达到目的的了,很简单吧!
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值