我有一个.NET 2005(C#)桌面应用程序,其中有一个登录表单和MDI窗体,然后有多个子窗体。 所有其他形式的唯一MDI形式打开。
当用户登录时,我隐藏登录表单,然后显示MDI形式,但是当我关闭MDI形式,我的申请过程并没有结束,因为登录表单仍有隐忧。 我想,当用户关闭MDI窗体,整个应用程序应该关闭(基本上,这个过程应该不会在任务管理器中显示),因为如果每次用户关闭并重新打开应用程序和登录,它会创建一些性能问题。
我做喜欢的东西如下:
//my login validation script,
//after successful login
this.Hide();
if (globalData.ObjMdiMain.IsDisposed)
{
globalData.ObjMdiMain = new mdiMain();
}
globalData.ObjMdiMain.Show();
globalData
是我的,我创造这是由整个应用程序所需的全局对象的静态类。 在那里,我已经定义了ObjMdiMain
我MDI形式的对象,我在登录表单这里访问它。
所以,是否有任何方法或函数,它将结束从系统的全过程,类似“Application.End();” 或者是其他东西?
谢谢!
我从你的描述假设(请纠正我,如果我错了),你必须登录表单设置为启动窗体,如下所示:
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LoginForm());
}
不要那样做。 将其更改为这样的事情,而不是:
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LoginForm frm = new LoginForm();
if(frm.ShowDialog() == DialogResult.Cancel) {
return;
}
Application.Run(new MdiForm());
}
在您的登录表单代码,不叫MDI形式可言,只是验证用户名和密码,并允许登录表单退出。 该Main
则方法将正确地调用MDI形式。
然后,您的应用程序将在您关闭MDI形式退出自然。
我觉得奇怪,你离开隐藏在首次登录后登录窗口。 为什么不收呢? 然后,你不会有当前的问题:成功登录后,你只需要在主MDI窗口关闭时退出正在运行的Windows窗体应用程序。 有没有什么隐藏的登录窗口,而不是关闭它的理由吗?
我想你已经看了Application.Exit ?
有Application.Exit()将发送一个消息窗口关闭所有形式和退出消息循环。
我不想打破它给你,但是...... Application.Exit()
是你问什么。 假如你确实尽力了,你会发现它。 虽然,我有peSHIr同意,你为什么要保持登录表单周围,如果它导致你的问题?
这里是关闭的实际过程的满耳,但它是坏的方式来关闭一个应用程序:
Environment.Exit(Code)
你可以为0或者其他整数设置代码,这将告诉Windows wath是应用程序的执行结果。
我建议你先关闭登录表单,然后关闭您的应用程序,这是正确的方式。
祝好运 ;)
这似乎是一个MySQL的.NET连接器的bug,因为我采用的是MySQL .NET接口DLL连接到我的MySQL数据库。 我已经看到了一些其他的抱怨这一点。 见http://bugs.mysql.com/bug.php?id=36688
我用的是5.1版本的MySQL .NET连接器的DLL,我刚刚升级到6.1(最新)和其没有任何错误做工精细。
在这里下载最新的DLL: http://dev.mysql.com/downloads/connector/net/6.1.html
谢谢