c# e.Cancel 问题

privatevoidbutton2_Click(objectsender,EventArgse){DialogResultc=MessageBox.Show("真的要退... private void button2_Click(object sender, EventArgs e)
{
DialogResult c = MessageBox.Show("真的要退出本软件吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (c == DialogResult.OK)
Application.Exit();
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult d = MessageBox.Show("真的要退出本软件吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (d == DialogResult.Cancel)
e.Cancel = true;
}

当这两段代码同时写的时候,为什么在button1_click 事件中
对话框要弹出两次才能关闭窗体?请多多指教!
那该如何写啊!
好像把
Application.Exit();
换成
Environment.Exit(0);
可以
那还有其他办法吗?
展开
 我来答
精品教辅

推荐于2016-10-08 · 知道合伙人教育行家
精品教辅
知道合伙人教育行家
采纳数:3089 获赞数:51979
化学高级教师

向TA提问 私信TA
展开全部
这样写。
//单击事件
//因为当this.Close()时会调用FormClosing事件。
//你弹框,然后this.Close(),又FormClosing,所以就两次。

private void button2_Click(object sender, EventArgs e)
{
this.Close();//会自动调用这个事件Form1_FormClosing
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult d = MessageBox.Show("真的要退出本软件吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (d == DialogResult.Cancel)
e.Cancel = true;
}+=是给事件订阅方法,即当触发这个事件的时候就调用这个方法
=>这个是lambda表达式,前面的说这个基本不用,这是不对的,这个就像java中的匿名类一样,在这里实现的是匿名方法,有好处,也有坏处,好处就是代码更加简化,而且看上去清晰,坏处的话在我看来无非就是一个,不能多次调用,所以这个一般会用在需要使用到匿名方法的时候,当然C#还有很多可以声明匿名方法的方法,这只是其中之一,“{}”中的看得懂,方法中的代码。
老级幸1286
推荐于2018-03-13 · TA获得超过511个赞
知道小有建树答主
回答量:756
采纳率:0%
帮助的人:387万
展开全部
这样写。
//单击事件
//因为当this.Close()时会调用FormClosing事件。
//你弹框,然后this.Close(),又FormClosing,所以就两次。

private void button2_Click(object sender, EventArgs e)
{
this.Close();//会自动调用这个事件Form1_FormClosing
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult d = MessageBox.Show("真的要退出本软件吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (d == DialogResult.Cancel)
e.Cancel = true;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
51070147
2009-12-04
知道答主
回答量:23
采纳率:0%
帮助的人:0
展开全部
当然啊。。。FORMCLOSING事件是在关闭窗体的时候触发的。。你在APPLICATION.EXIT()的时候就触发了CLOSING事件。然后就执行了下面的代码。。当然是两次了。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rover1367
2009-12-04 · TA获得超过253个赞
知道小有建树答主
回答量:251
采纳率:0%
帮助的人:160万
展开全部
你都已经在 Form1_FormClosing 里写了提示了。
为什么还要在button_click里又写?
直接去掉一个就好了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式