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的红叉叉,让万恶的程序结束吧!!!! 展开
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的红叉叉,让万恶的程序结束吧!!!! 展开
4个回答
展开全部
这种情况下,正常应该能关闭的,你在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);
}
代码是没有任何问题的,本人亲测的哈,希望对你有用????期待你的追问,把这个问题彻底解决!
再提供一种别的方式供你使用:
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;
}
}
肯定能通过,不信你再试试!有问题,希望对你有帮助!
展开全部
因为你只是隐藏了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#的,留联系方式。
如果是在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#的,留联系方式。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接这样 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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我以前也遇到过这样类似的问题,你把最后一句 Application.Exit(); 改成 Enviroment.Exit(0);
在看看。祝你好运~
在看看。祝你好运~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询