C#中form1里点button1,form2打开同时form1隐藏,然后用form2框体上的红叉叉关闭form2,为什么程序不中止?

十万火急,代码如下:Form1:namespaceWindowsFormsApplication2{publicpartialclassForm1:Form{public... 十万火急,代码如下:
Form1:

namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Show();
this.Hide();

}
}
}

Form2:

namespace WindowsFormsApplication2
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Application.Exit();
}
}
}
求高人指点,最好把代码改一下,点一下From2的红叉叉,让万恶的程序结束吧!!!!
展开
 我来答
cowonder
2012-02-19
知道答主
回答量:23
采纳率:0%
帮助的人:17.2万
展开全部
这种情况下,正常应该能关闭的,你在FormClosing事件中使用的是Application.exit(),关闭的是整个程序,就算是隐藏的窗体也是可以被关闭的,亲自测试过,在我的VS2010下可以,你的不可以,可能是别的原因,这段代码方面,没有问题!
再提供一种别的方式供你使用:
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = System.Windows.Forms.DialogResult.OK;
}
修改下应用程序的主入口程序Program.cs:
将原有的:Application.Run(new Form1());注释掉
改成:
Form1 frm1 = new Form1();
if (frm1.ShowDialog() == DialogResult.OK)
{
frm1.Close();//这里将FORM1关闭也可以的
Form2 frmMain = new Form2();
Application.Run(frmMain);
}
代码是没有任何问题的,本人亲测的哈,希望对你有用????期待你的追问,把这个问题彻底解决!
更多追问追答
追问
用你的方法确实解决了from2能顺利关闭 , 我想再问下 我想让from2关闭时出现"是否要退出"的对话框,你看我的     
if (MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{ Application.Exit();}
else {e.Cancel = true;}
我看网上都是这么写的啊.为什么我的就不行难道真是我的vs出问题了.完了后我再追加20给你,万望解答
追答
想让from2在退出时弹出对话框的话,你提供的语句完全可以的,不过,你得写对地方,你得写在Form2的Form2_FormClosing 事件里面,同时有个小小的毛病,是个逻辑问题:
详细的代码是:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{

if (MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}

}
或者直接:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{

if (MessageBox.Show("确定要退出吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.Cancel)
{
e.Cancel = true;
}
}
肯定能通过,不信你再试试!有问题,希望对你有帮助!
leiyangbdwk
2012-02-19 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4330万
展开全部
因为你只是隐藏了1,没有关闭1.
如果是在vb.net中,我是这样写的:
Public Class Form1
Private WithEvents frm2 As New Form2
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Me.Hide()
frm2.Show()

End Sub

Private Sub frm2Close() Handles frm2.FormClosing
Me.Close()
End Sub
End Class
成功完成你的要求。
如果你需要转换成c#的,留联系方式。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CSNT
2012-02-19 · 超过14用户采纳过TA的回答
知道答主
回答量:112
采纳率:0%
帮助的人:55.2万
展开全部
直接这样 private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); Form1 f1=news()Form1();f1.Close();后面 } Application.Exit(); 改成 Enviroment.Exit(0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
501703793yang
2012-02-19 · TA获得超过155个赞
知道答主
回答量:100
采纳率:100%
帮助的人:60.1万
展开全部
我以前也遇到过这样类似的问题,你把最后一句 Application.Exit(); 改成 Enviroment.Exit(0);
在看看。祝你好运~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式