问题描述
1. frmHome frm = new frmHome();
frm.Show();
this.Close();
我打开 HomeForm
从 LoginForm的
。在 LoginForm的
的 form_closed
事件我称之为 Application.Exit()
。这可以让你通过点击 X
键打开 LoginForm的
和退出应用程序。
I'm opening HomeForm
from LoginForm
. In LoginForm
's form_closed
event I call Application.Exit()
. This allows you to open LoginForm
and exit the application by clicking the X
button.
现在的问题是,当我从 LoginForm的
移至 HomeForm
并调用 this.Close()
, LoginForm的
触发器的 form_closed
事件和应用程序获取关闭。
The problem is when I move from LoginForm
to HomeForm
and call this.Close()
, the form_closed
event of LoginForm
triggers and the application gets closed.
我允许一次显示只有一种形式。
I am allowed to show only one form at a time.
推荐答案
您可以使用一个布尔(全局变量)的出口标志在 LoginForm的
you can use a boolean (global variable) as exit flag in LoginForm
其初始化为:
exit = true;//in constructor
设置为false闭幕前:
set it to false before closing:
frmHome frm = new frmHome();
frm.Show();
exit = false;
this.Close();
和 form_closed
:
if(exit) Application.Exit();
如果用户关闭与'X'的形式
按钮,退出
将具有值真正
和 Application.Exit()
将被称为
if a user closes the form with the 'X'
button, exit
will have the value true
, and Application.Exit()
will be called.
以上是行不通的,因为 LoginForm的
是 Application.Run(登录表单)使用您的主要形式
。
the above is not working because LoginForm
is your main form used by Application.Run(loginForm)
.
2的建议:
使用退出
标记:的
替换
Application.Run(new LoginForm())
按
LoginForm loginFrm = new LoginForm();
loginFrm.Show();
Application.Run();
的没有退出
标志:的
在你当前的代码替换:
frmHome frm = new frmHome();
frm.Show();
this.Close();
按
by
frmHome frm = new frmHome();
this.Visible = false;
frm.ShowDialog();
this.Close();
这篇关于Winform的窗体关闭和开启的新形式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!