您的位置:首页 > 编程语言 > C#

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里面参数所运行的窗体实例关闭的时候,就会返回了,所以我们有了办法;

直接看代码

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,就顺利达到目的的了,很简单吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐