问题所在:
如果直接使用 this.Close(); 方法,然后将要显式的窗体Show出来,则所有窗体都关闭了,为什么呢?
原因:因为调用this.Close();的这个窗体,是整个程序的入口窗体,你把这个窗体Close()了,也就是 把这个应用程序的主入口给关了,所有,上面所有的窗体都关了。
解决思路:
1、在登录窗体中设置一个全局变量closeFlog
public bool closeFlag = true;
2、关闭登录窗口,将closeFlog 设为false
this.Close();
closeFlag = false;
3、修改Program中的主函数:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LoginForm login = new LoginForm();
login.ShowDialog(); // 模式窗口,先运行LoginForm
if (login.closeFlog == false)
{
Application.Run(new MainManageForm());
}
例子:
登录窗体代码:
public bool closeFlog = true;
this.Close();
closeFlag = false;
主函数代码:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
LoginForm login = new LoginForm();
login.ShowDialog(); // 模式窗口,先运行LoginForm
if (login.closeFlog == false)
{
Application.Run(new MainForm());
}OK!搞定啦!!!
本文讨论了在特定编程场景下,如何避免通过直接关闭窗体导致整个应用程序退出的情况。通过设置全局变量和修改主函数逻辑,可以确保只关闭特定的登录窗口,而不会影响到其他操作。
4603

被折叠的 条评论
为什么被折叠?



