运行开始有一个登陆窗口,登陆后出现另外一个窗口!!
这时退出程序分两种情况:
1.点窗口的关闭按钮。
2.点菜单的“退出”这两个分别对应着FormClosed和tsmiExit_Click(退出的单机事件)但事件代码都是一样的如下:DialogResult result = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
Application.Exit();
}但实际运行时却有不尽人意的地方:
1.点窗口的关闭后,应用程序不能真正的退出,还有点一些调试环境中的停止按钮才能退出。
2.点菜单的“退出”,是能完全退出,但却会弹出两次对话框(代码中只有一次,我也只要它弹出一次)。请问怎么解决呢!!
这时退出程序分两种情况:
1.点窗口的关闭按钮。
2.点菜单的“退出”这两个分别对应着FormClosed和tsmiExit_Click(退出的单机事件)但事件代码都是一样的如下:DialogResult result = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
Application.Exit();
}但实际运行时却有不尽人意的地方:
1.点窗口的关闭后,应用程序不能真正的退出,还有点一些调试环境中的停止按钮才能退出。
2.点菜单的“退出”,是能完全退出,但却会弹出两次对话框(代码中只有一次,我也只要它弹出一次)。请问怎么解决呢!!
两种方案:
第一种是加一个标志量,如果点了tsmiExit,标志量置位,然后在formclose里判断,已经由tsmiExit请求退出了,那么就不需要执行相应代码了
第二种是在点击tsmiExit之后注销FormClosed事件即可.
{
if (MessageBox.Show("确实要退出吗", "hello", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
e.Cancel = true;
}
// 改成这样
void tsmiExit_Click(object sender, EventArgs e)
{
this.Close();
}
void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}// 如果要问是否确定退出,在Form1_FormClosing中做,见5楼(人生如梦)的回帖。
{
fommain.Close();//这就行了,}forMain.FomClosing()//事件
{
MessageBox != Yes
{
e.Cancel = true;
}
}
//接分咯.
然后在FormClosing事件里做处理 protected override void OnFormClosing(FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
Application.Exit();
}
else
{
e.Cancel = true;
}
}
意思是两个事件中你就走一个就好了