退出对话框

sure356 2010-09-03 11:32:56
大家好!
我的winform上有个退出按钮,程序如下:

DialogResult result = MessageBox.Show("您确定退出本系统?", "退出对话框", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
Application.Exit();
}


而我希望点击界面的×时,也能出现对话框,所以我在closing_fcn里面写了同样上面的程序,后来发现
点winform上的退出按钮时,会出现2次对话框确定,因此,我猜测,可能是执行Application.Exit();
的时候将closing_fcn也执行了一次,所以出现了2次对话框,请问该如何避免这种干扰,让点退出按钮和
winform上的×时都只出现一次对话框呢
...全文
146 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
journey_q 2010-09-03
  • 打赏
  • 举报
回复

/// <summary>
/// 点击关闭后,停止程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void indexForm_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
/// <summary>
/// 点击关闭时询问
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void indexForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("是否退出系统", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
}
/// <summary>
/// 退出系统
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("是否退出系统", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Application.ExitThread();
}
else
{
return;
}
}
sz_free_bird 2010-09-03
  • 打赏
  • 举报
回复
 private void button1_Click(object sender, EventArgs e)
{
this.Close();
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("您确定退出本系统?", "退出对话框", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
e.Cancel = true;
}

}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
liudingding1984 2010-09-03
  • 打赏
  • 举报
回复
楼主,我的代码是自己项目中测试的,应该没有问题。
andy1118 2010-09-03
  • 打赏
  • 举报
回复
liudingding1984 2010-09-03
  • 打赏
  • 举报
回复
直接在需关闭得窗体cs文件中新增如下代码,其他地方不需修改:
//退出系统的信息提示
protected override void OnClosing(CancelEventArgs e)
{
DialogResult drt = MessageBox.Show(this, "是否确定退出系统?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (drt == DialogResult.OK)
{
base.OnClosing(e);
Application.Exit();
}
else if (drt == DialogResult.Cancel)
{
e.Cancel = true;
}
}
ztenv 2010-09-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zilong4460072 的回复:]
C# code

if (result == DialogResult.Yes)
{
this.Close();//这样不行吗?
}
[/Quote]
不行,
WoLouis 2010-09-03
  • 打赏
  • 举报
回复
遇见过同样的问题..
Nick黄 2010-09-03
  • 打赏
  • 举报
回复
退出按钮里边是不是也写了这个对话框?
zilong4460072 2010-09-03
  • 打赏
  • 举报
回复

if (result == DialogResult.Yes)
{
this.Close();//这样不行吗?
}

ztenv 2010-09-03
  • 打赏
  • 举报
回复
在Closing事件中写一次代码就行了,删除退出按钮的代码,只保留:Application.Exit();
Nick黄 2010-09-03
  • 打赏
  • 举报
回复
沙发、

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧