c#打开新窗体后关闭旧窗体
2013-06-28 01:45
204 查看
很多做winform的朋友在做登陆界面的时候总会遇到这个问题:
当用户输入正确,登陆的时候,new出一个想显示的窗口,然后show这个新窗口对象,在将当前窗体this,close掉
这一切看起来貌似合理正常,可就是没有显示,原因我相信大家马上就找到了,对就是父窗体都不在了(执行了close()方法了)
他里面的所有对象(当然包括你刚刚new出来的新的想要显示的登陆后的窗体了)都将不在了,此刻的应用程序就结束了
有没有办法呢?哈哈,当然有了,不然就不在这里写了,应该去microsoft的版块儿写了。
每个winform都有个program的类文件,这里显示了应用程序的入口Main函数,这里就会从一开始new出,并run起来你的第一个窗体
因此我们的办法就是在这里下功夫:
原理:
program类中application.run是依次执行的,也就是说如果有两句application.run()的话,另外一句要再这一句执行完返回以后才会执行,
那么,什么时候算执行完呢,窗体关闭,run里面参数所运行的窗体实例关闭的时候,就会返回了,所以我们有了办法;
直接看代码
这样就一目了然了吧,你只需要在你的登陆窗体成功的时候,将我们的Login变量赋值为true,就顺利达到目的的了,很简单吧!
当用户输入正确,登陆的时候,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,就顺利达到目的的了,很简单吧!
相关文章推荐
- C#中实现窗体第二次打开时,在原来第一次关闭的位置,类似于QQ面板
- C# 关闭当前窗体打开另一窗体?
- c# 打开exe文件与关闭exe文件 c#服务打开exe时候默认是没有窗体界面的
- C#中打开新窗体关闭旧窗体
- c# 打开exe文件与关闭exe文件 c#服务打开exe时候默认是没有窗体界面的
- C#打开关闭窗体事件顺序
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- Winform模态窗体关闭时赋值给打开自身的窗体(C# 事件委托版)
- C#的web开发,窗体的打开和关闭几种语句
- C# 从一个窗体打开或关闭本程序另一个窗体
- C#主窗体控件打开一个子窗体,子窗体关闭后,再重新打开子窗体出现:无法访问已经释放的对象
- C#主窗体控件打开一个子窗体,子窗体关闭后,再重新打开子窗体出现:无法访问已经释放的对象
- c# 做的登录窗体,登录成功后当前登录Form关闭,打开Main窗体,但Main窗体点关闭按钮后程序仍在进程怎么办
- C#在后台注册一个脚本,打开一个子窗口,显示在屏幕中间,关闭子窗体刷新子窗体代码
- c#实现关闭当前窗体并打开另一个已经创建的窗体
- c# 做的登录窗体,登录成功后当前登录Form关闭,打开Main窗体,但Main窗体点关闭按钮后程序仍在进程怎么办
- 使用C#打开新窗口关闭旧窗口的方法;winform中防止重复打开多个相同子窗体
- Winform模态窗体关闭时赋值给打开自身的窗体(C# 事件委托版)
- 比较精简的C#中打开新窗体关闭旧窗体
- C# WinForm 关闭登陆窗体,打开主窗体的实现.