如何在winform上单击(红色X)按钮右上方退出应用程序
我的申请表中有两种表格。 frmLogin
和frmDash
。 登录后。 我点击登录按钮hiding
frmLogin
。 显示frmDash
广告。
在frmDash
,有frmDash
按钮。 点击this.Close()
,我正在使用this.Close()
并显示登录表单。 但现在,如果我单击(red X)
按钮frmLogin
整个应用程序没有终止。 请提出一些建议。 我试过这个:
private void btnLogin_Click(object sender, EventArgs e) { try { this.Hide(); string Log_API = "http://api.retailbutton.co/WS/Service.php?Service=employeeLogin"; if (LoginUser(Log_API)) { logIn_Status = "true"; GlolbalUtil.LogIn_Status = logIn_Status; frmDash frmDash = new frmDash(); frmDash.Owner = this; frmDash.Show(); txtUsername.Text = ""; txtPassword.Text = ""; //GlolbalUtil.accept_status = "1"; } else { MessageBox.Show("Please Check Username and password"); FrmLogin frmLogin = new FrmLogin(); frmLogin.Owner = this; frmLogin.Show(); } }
frmDash
Logout按钮的frmDash
:
private void button1_Click(object sender, EventArgs e) { GlolbalUtil.LogIn_Status = "false"; this.Close(); FrmLogin fl = new FrmLogin(); fl.Show(); }
您在登录并隐藏表单时创建frmDash的新实例。 然后当你注销时,你会说this.close()并创建另一个新的FrmLogin实例。 不要回到FrmLogin的原始实例。
这意味着您将始终拥有您开始使用的隐藏实例。 (如果关闭FrmLogin的新实例,隐藏的FrmLogin仍然存在。)
您可以在btnLogin_Click中添加以下内容:
frmDash.ParentForm = this;
和button1_Click应如下所示:
private void button1_Click(object sender, EventArgs e){ GlolbalUtil.LogIn_Status = "false"; FrmLogin fl = (FrmLogin)this.Parent; //Prior it said ParentForm this.Close(); fl.Show(); }
如果您实现此目的,您将显示初始登录表单,当您关闭它时,您将关闭登录表单的初始实例。
@Edit 10:52 25-06-2015无法分配ParentForm并且只读。 解决方案是将其分配给Parent,或者以下内容也可以应用于btnLogin_Click:
frmDash.Owner = this;
和button1_Click:
private void button1_Click(object sender, EventArgs e){ GlolbalUtil.LogIn_Status = "false"; FrmLogin fl = (FrmLogin)this.Owner this.Close(); fl.Show(); }
@Edit 08:16 29-06-2015(下一个问题)
private void btnLogin_Click(object sender, EventArgs e) { try { string Log_API = "http://api.retailbutton.co/WS/Service.php?Service=employeeLogin"; if (LoginUser(Log_API)) { logIn_Status = "true"; GlolbalUtil.LogIn_Status = logIn_Status; frmDash frmDash = new frmDash(); frmDash.Owner = this; ////If you hide here, you do not have to make //a new instance when the if statement is not true.//// this.Hide(); frmDash.Show(); txtUsername.Text = ""; txtPassword.Text = ""; //GlolbalUtil.accept_status = "1"; } else { MessageBox.Show("Please Check Username and password"); ////Delete following//// //FrmLogin frmLogin = new FrmLogin(); //frmLogin.Owner = this; //frmLogin.Show(); } }
使用Application.Exit(); 单击按钮时的方法
将其添加到Designer.cs
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.SampleClassName_FormClosed);
然后右键单击SampleClassName_FormClosed并单击“转到定义”。
然后在创建的类中调用要关闭的表单。
如果您使用自定义按钮,请执行此操作
private void QuitButton_Click(object sender, EventArgs e) { DialogResult DialogResult = MessageBox.Show("Do you really want to exit?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Hand); if (DialogResult == DialogResult.Yes) Application.Exit();//Here is the code to close everything else //Do stuff }
如果您使用的是X按钮,请添加FormClosing事件,代码如下所示:
private void Form1_FormClosing(object sender, FormClosingEventArgs e){ DialogResult DialogResult = MessageBox.Show("Do you really want to exit?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Hand); if (DialogResult == DialogResult.Yes) Application.Exit();//Here is the code to close everything else //Do stuff }
在您的2.表格上尝试以下内容:
public partial class Form2 : Form { private bool ForceClose = true; public Form2() { InitializeComponent(); } private void Form2_FormClosing(object sender, FormClosingEventArgs e) { if (ForceClose) Application.Exit(); } private void button1_Click(object sender, EventArgs e) { GlolbalUtil.LogIn_Status = "false"; ForceClose = false; this.Close(); } }
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Application.Exit();//close the whole program using x (red)button }