读书人

C# [重新登陆功能]与[X关闭]功能冲突

发布时间: 2013-11-06 16:26:37 作者: rapoo

C# [重新登陆功能]与[X关闭]功能冲突,欲知详情,请点击我
请教各位一个问题,描述如下:

现有一winform主窗体,发现点击右上角的[X]关闭按钮之后,只是关闭了窗体界面,而没有真正得退出程序进程。于是,我在form_closing事件里面加入如下代码:


private void MainFormAdmin_FormClosing(object sender, FormClosingEventArgs e)
{

if (e.CloseReason != CloseReason.ApplicationExitCall)
{
DialogResult re = MessageBox.Show("确定要退出系统?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (re == DialogResult.Yes)
{
e.Cancel = false;
Application.Exit();
}
else
{
e.Cancel = true;
}
}
}

在form_closing事件里加入代码后,问题已解决,点击X关闭可以正常退出程序。

可是,form_closing事件与下面一段主窗体[重新登陆]功能代码冲突了:


private void 重新注册ToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult MsgBoxResult;
MsgBoxResult = MessageBox.Show("确定要重新注册系统?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2);
if (MsgBoxResult == DialogResult.Yes)
{
this.Close();
Login lg = new Login();
lg.Show();
}
}


在执行重新注册点击事件的“this.Close()”时,会执行form_closing,导致注册时也提示是否要退出系统,请教,应该如何设计可以让注册事件在正常工作的前提下,点击右上角的[X]关闭按钮也可以完全退出程序进程。谢谢。
[解决办法]
加一个全局变量,表明是不是重新注册,是重新注册的话就不走
if (e.CloseReason != CloseReason.ApplicationExitCall)
{
DialogResult re = MessageBox.Show("确定要退出系统?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
if (re == DialogResult.Yes)
{
e.Cancel = false;
Application.Exit();
}
else
{
e.Cancel = true;
}
}
这个语句。
[解决办法]
本帖最后由 bdmh 于 2013-11-05 10:49:51 编辑 this.Hide();
或者根本没必要关闭窗体,显示在那又如何
[解决办法]
也可以试试e.CloseReason != CloseReason.UserClosing)


[解决办法]
现有一winform主窗体,发现点击右上角的[X]关闭按钮之后,只是关闭了窗体界面,而没有真正得退出程序进程
//应该找到点击关闭按钮为什么没有退出进程,关闭主窗体正常来说应该是进程退出的,如果没有退出应该找出进程没有退出的原因,可能是其它的资源没有关闭,而不是直接 Application.Exit(); 看看Program中的Main()方法,也就是你程序的主入口,或者调出你主窗体的代码。
[解决办法]
给你个 思路 你 点击 重写登陆 时 把 主窗体隐藏
this.visible = false;
Login log = new Login()
if (log.ShowDialog() == dialog.ok)
{
//你需要执行相关 的方法
//显示窗体
this.visible = true;
}

读书人网 >C#

热点推荐