窗体的右上方的关闭键怎么关闭整个程序? 运行的时候先出来窗体一 然后在窗体一new了一个窗体2 然后我窗体1hide 窗体2show,当我按窗体2右上角的关闭按钮的时候 他不能关闭整个程序 在vs上要按 f6才能结束调试 我用了窗体2里面的 fromclosing 在里面写代码Application.Exit() 确实能达到我要的效果 想问下怎样可以直接关闭右上角的按键就可以关闭了? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Application.Exit()是最简单直接有效的办法其他的办法也有很多,但是比这个麻烦多了,不知道你为什么不用Application.Exit()可以在窗体1里添加窗体2的close事件在事件里写关闭自己的代码也可以实现整个程序的退出 主窗体退出,程序才能退出。如果要在子窗体关闭时退出,最好的办法是写Application.Exit()。 既然都要关闭整个程序了,那为何不用Apllication.Exit()。 在form2的closing事件中写form1的close事件 设置一下 窗体的,Closing或Closed事件,使用Application.exit方法 那意思是 我每建立一个窗体就要加一下代码?private void frm_main_FormClosing(object sender, FormClosingEventArgs e) { Application.Exit(); } 我的具体代码是这样写的 private void frm_main_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("确定退出吗?", "安全提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) Application.Exit(); else e.Cancel =false ; }这样写我发现两个问题 第一 那个MessageBox会出现两次! 第二 我选择取消的时候他还是关闭了 不过关闭的是本窗体而不是整个程序 怎么可以关闭整个程序? 1)else e.Cancel=false;//是完全没有作用的代码2)MessageBox出现两次,我猜是你hide的窗体的Closing事件中有同样的代码 对啊,看一下你的另一个窗体有没有和主窗体Closing事件中一样的代码,若有的话可以在关闭主窗体时,在主窗体Closing事件里取消那一个窗体的Closing事件的订阅 else e.Cancel =false 这个问题是我犯2了 出现两次的问题怎么解决?其他窗体没有这个代码 我问了下别人 他这样答的 会出现2次是因为你在调用Application.Exit()的时候,也会产生这个事件,此时它的CloseReason的值是CloseReason.ApplicationExitCall,使用CloseReason有几种,你可以去看一下那。。说白了。。怎样改才会只出现一次? 改成了这样成功了,可以结贴了。 我想问下大家一般多窗体的时候的代码是怎样的?新手,想得到一个好的模式做基础。我的是form1中{ frm_main main = new frm_main(); main.Show(); this.Hide ();}然后每次的关闭都是用 Application.Exit(); 这样有问题吗?一般的模式是怎样? ··忘记把代码贴上去了 if (MessageBox.Show("确定退出吗?", "安全提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { this.Dispose(); Application.Exit(); } else e.Cancel = true; 你可以做一个基类Form,里面加上这个事件,所有窗体都去继承它,这样就不用一个个窗体写这段代码了。这也是OOP通过继承让代码复用的一个典型例子。 意思是建立一个baseForm继承form 再基类加代码 然后以后我继承的窗体类继承baseForm 对吗? 请教程序中读log4net日志的线程问题 关于Access2003的问题 c#中如何调用bcp DataGridView绑定Ilist 谁用过c#编程过明华读卡器? 请问:这样的sql语句怎么写?(sql server/ado.net) 向各位高手请教下这个问题! 奇怪的问题:在英文版的系统连不上SQLserver2000,语言改成中文才行 请问API对C#有用吗? 简单,字符串转换的问题? C# crystalreport取不到数据 C#如何实现下图的图表对比功能
既然都要关闭整个程序了,那为何不用Apllication.Exit()。
private void frm_main_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
private void frm_main_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("确定退出吗?", "安全提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
Application.Exit();
else e.Cancel =false ;
}
这样写我发现两个问题 第一 那个MessageBox会出现两次! 第二 我选择取消的时候他还是关闭了 不过关闭的是本窗体而不是整个程序 怎么可以关闭整个程序?
2)MessageBox出现两次,我猜是你hide的窗体的Closing事件中有同样的代码
看一下你的另一个窗体有没有和主窗体Closing事件中一样的代码,若有的话
可以在关闭主窗体时,在主窗体Closing事件里取消那一个窗体的Closing事件的订阅
那。。说白了。。怎样改才会只出现一次?
我的是
form1中
{
frm_main main = new frm_main();
main.Show();
this.Hide ();
}
然后每次的关闭都是用
Application.Exit();
这样有问题吗?一般的模式是怎样?
{
this.Dispose();
Application.Exit();
}
else e.Cancel = true;