如果在form1跳转到form2
使用的方法是隐藏form1 显示form2的话,按form2的关闭图标(就是右上角的那个交叉按钮)只能关闭form2,不能把应用程序整个关闭,如果我想要关闭任意一个form的都可以实现关闭整个程序要如何写,另外的话,如果按那个关闭键,需要弹出一个提示框,提示确认关闭和返回程序,又该如何写,希望各位大侠们能帮助我!!!
谢谢!!!
31 个解决方案
#1
只要首先实例化一个窗体,然后用实例化的窗体点要转换到的窗体就行了。OK?
Form1 form =new Form1
form.
Form1 form =new Form1
form.
#2
Application.Exit();
#3
form1作为主窗体, 关闭form2的话就不会退出程序了;
如果你要实现form2也可以关闭程序则在form1中监听form2的FormClose事件,判断一下是否需要退出程序,如果需要则关闭form1即可;
如果form1是主窗口,form1的关闭会直接导致程序关闭.
如果你要实现form2也可以关闭程序则在form1中监听form2的FormClose事件,判断一下是否需要退出程序,如果需要则关闭form1即可;
如果form1是主窗口,form1的关闭会直接导致程序关闭.
#4
你隐藏了Form1,在关闭From2后其实Form1仍在后台运行,所以下次运行时会报“当前程序正在被另一个进程使用...”错,其实解决办法很简单,就是在那两个窗体关闭的关闭事件中写一行代码,关闭当前所有进程即可:
//Form1窗体关闭事件
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();//关闭该线程上的所有窗体
}
]//Form2窗体关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();//关闭该线程上的所有窗体
}
这样做就不会发生你遇到的情况了
//Form1窗体关闭事件
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();//关闭该线程上的所有窗体
}
]//Form2窗体关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();//关闭该线程上的所有窗体
}
这样做就不会发生你遇到的情况了
#5
1.如果在Form1的窗体上添加一个跳转至Form2的按钮
2.然后双击该按钮,在它的单击事件中添加这些代码
3.Form2 form2 = new Form2();
form2.show();
即可实现从窗体1跳转至窗体2
4.关闭窗体的方法:
(1)this.Close();
(2)Application.Exit();
(3)this.Dispos();
2.然后双击该按钮,在它的单击事件中添加这些代码
3.Form2 form2 = new Form2();
form2.show();
即可实现从窗体1跳转至窗体2
4.关闭窗体的方法:
(1)this.Close();
(2)Application.Exit();
(3)this.Dispos();
#6
to 4楼
如果需要弹出关闭提示,是否在关闭事件里面添加messagebox呢?
如果需要弹出关闭提示,是否在关闭事件里面添加messagebox呢?
#7
路过。。。。
#8
是啊.
dialogresult result= messagebox.show("是否关闭","系统提示",messageboxbutton.yesorno,messageboxicon.information);
if(result==dialogresult.yes)
{
....
}
dialogresult result= messagebox.show("是否关闭","系统提示",messageboxbutton.yesorno,messageboxicon.information);
if(result==dialogresult.yes)
{
....
}
#9
有这样的吗》?
#10
Application.Exit();
#11
if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.OKCancel)==DialogResult.OK)
{
Application.exit()
}
else
{
不做任何处理
}
{
Application.exit()
}
else
{
不做任何处理
}
#12
Application.exit()
#13
正解
#14
在想要关闭的窗体的FormClosing事件中写代码!
这样就OK啦
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.OKCancel)==DialogResult.OK)
{
Application.exit()
}
}
这样就OK啦
#15
这个
#16
不好意思,重新整理一下哈:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.YesNo)==DialogResult.No)
{
e.Cancel = true;//取消关闭
}
}
#17
Form2 form=new Form2();//如果有参数的话可以在括号里写
form.show();
要全部推出就添加一个closing事件就行了
form.show();
要全部推出就添加一个closing事件就行了
#18
顶
#19
顶
#20
1.继承form,自己实现,之后都调用自己的form。
2.form.closing (event)
2.form.closing (event)
#21
form 1 fomr 2做成单态,
然后当关或者最小化form 1 的时候,用form2.show()实现form2的打开,在form2初始化的时候写form1.display == false。
分别给两个窗口添加closing时间,用Application.exit() ,就可以了
然后当关或者最小化form 1 的时候,用form2.show()实现form2的打开,在form2初始化的时候写form1.display == false。
分别给两个窗口添加closing时间,用Application.exit() ,就可以了
#22
to 16楼
错误 1 “System.Windows.Forms.FormClosedEventArgs”并不包含“cancle”的定义
如果用e.cancle=true;的话,会出现上面的错误,是什么原因呢??
错误 1 “System.Windows.Forms.FormClosedEventArgs”并不包含“cancle”的定义
如果用e.cancle=true;的话,会出现上面的错误,是什么原因呢??
#23
需要两步:
一. 要添加Form2_FormClosing事件,在添加此方法之前首先要在Form2的初始化(initialization)中注册此事件
this.FormClosing += //具体代码我打不出来,vs会提示的
二. Form.cs中的代码(手打的,难免有拼写错误):
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("您即将退出系统,您确定吗?","您确定关闭本窗体吗?",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
Application.exit()
}
else
{
e.Cancel;
}
}
一. 要添加Form2_FormClosing事件,在添加此方法之前首先要在Form2的初始化(initialization)中注册此事件
this.FormClosing += //具体代码我打不出来,vs会提示的
二. Form.cs中的代码(手打的,难免有拼写错误):
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("您即将退出系统,您确定吗?","您确定关闭本窗体吗?",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
Application.exit()
}
else
{
e.Cancel;
}
}
#24
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("是否关闭", "系统提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
return;
}
else
e.Cancel = true;
}
{
if (MessageBox.Show("是否关闭", "系统提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
return;
}
else
e.Cancel = true;
}
#25
不是很完整
不过看了之后有了更进一步的了解
谢谢
不过看了之后有了更进一步的了解
谢谢
#26
这么好的帖子 还不解题。白眼狼 ,我倒是要谢谢这些高手了。基本上满足我现在的需求了
#27
还行吧如从form1 form=new form1();
form.Show();
form.Show();
#28
#5楼 得分:5回复于:2009-03-14 18:05:011.如果在Form1的窗体上添加一个跳转至Form2的按钮
2.然后双击该按钮,在它的单击事件中添加这些代码
3.Form2 form2 = new Form2();
form2.show();
即可实现从窗体1跳转至窗体2
4.关闭窗体
这个很好!以前经常这样干。。。
2.然后双击该按钮,在它的单击事件中添加这些代码
3.Form2 form2 = new Form2();
form2.show();
即可实现从窗体1跳转至窗体2
4.关闭窗体
这个很好!以前经常这样干。。。
#29
不错
#30
这个有问题吧。在询问是否退出后,调用application.exit。而application.exit有会调用所有form的formclosing方法。那么又会弹出messagebox继续询问,而后才能退出,显然这是不行的。
参考MSDN如下:
Exit 方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。 该方法并不强制退出该应用程序。Exit 方法通常从一个消息循环内调用,该方法强制 Run 返回。 若要只退出当前线程的某个消息循环,请调用 ExitThread。
Exit 引发下列事件并执行关联的条件操作:
为 OpenForms 属性表示的各个窗体引发 FormClosing 事件。 可以通过将这些窗体的 FormClosingEventArgs 参数的 Cancel 属性设置为 true,取消此事件。
如果多个处理程序的其中之一取消该事件,则 Exit 将返回而无进一步操作。 否则,将为每个打开的窗体引发 FormClosed 事件,然后关闭所有正在运行的消息循环和窗体。
#31
#1
只要首先实例化一个窗体,然后用实例化的窗体点要转换到的窗体就行了。OK?
Form1 form =new Form1
form.
Form1 form =new Form1
form.
#2
Application.Exit();
#3
form1作为主窗体, 关闭form2的话就不会退出程序了;
如果你要实现form2也可以关闭程序则在form1中监听form2的FormClose事件,判断一下是否需要退出程序,如果需要则关闭form1即可;
如果form1是主窗口,form1的关闭会直接导致程序关闭.
如果你要实现form2也可以关闭程序则在form1中监听form2的FormClose事件,判断一下是否需要退出程序,如果需要则关闭form1即可;
如果form1是主窗口,form1的关闭会直接导致程序关闭.
#4
你隐藏了Form1,在关闭From2后其实Form1仍在后台运行,所以下次运行时会报“当前程序正在被另一个进程使用...”错,其实解决办法很简单,就是在那两个窗体关闭的关闭事件中写一行代码,关闭当前所有进程即可:
//Form1窗体关闭事件
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();//关闭该线程上的所有窗体
}
]//Form2窗体关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();//关闭该线程上的所有窗体
}
这样做就不会发生你遇到的情况了
//Form1窗体关闭事件
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();//关闭该线程上的所有窗体
}
]//Form2窗体关闭事件
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
Application.ExitThread();//关闭该线程上的所有窗体
}
这样做就不会发生你遇到的情况了
#5
1.如果在Form1的窗体上添加一个跳转至Form2的按钮
2.然后双击该按钮,在它的单击事件中添加这些代码
3.Form2 form2 = new Form2();
form2.show();
即可实现从窗体1跳转至窗体2
4.关闭窗体的方法:
(1)this.Close();
(2)Application.Exit();
(3)this.Dispos();
2.然后双击该按钮,在它的单击事件中添加这些代码
3.Form2 form2 = new Form2();
form2.show();
即可实现从窗体1跳转至窗体2
4.关闭窗体的方法:
(1)this.Close();
(2)Application.Exit();
(3)this.Dispos();
#6
to 4楼
如果需要弹出关闭提示,是否在关闭事件里面添加messagebox呢?
如果需要弹出关闭提示,是否在关闭事件里面添加messagebox呢?
#7
路过。。。。
#8
是啊.
dialogresult result= messagebox.show("是否关闭","系统提示",messageboxbutton.yesorno,messageboxicon.information);
if(result==dialogresult.yes)
{
....
}
dialogresult result= messagebox.show("是否关闭","系统提示",messageboxbutton.yesorno,messageboxicon.information);
if(result==dialogresult.yes)
{
....
}
#9
有这样的吗》?
#10
Application.Exit();
#11
if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.OKCancel)==DialogResult.OK)
{
Application.exit()
}
else
{
不做任何处理
}
{
Application.exit()
}
else
{
不做任何处理
}
#12
Application.exit()
#13
正解
#14
在想要关闭的窗体的FormClosing事件中写代码!
这样就OK啦
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.OKCancel)==DialogResult.OK)
{
Application.exit()
}
}
这样就OK啦
#15
这个
#16
不好意思,重新整理一下哈:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("确定要关闭吗","提示",MessageBoxButtons.YesNo)==DialogResult.No)
{
e.Cancel = true;//取消关闭
}
}
#17
Form2 form=new Form2();//如果有参数的话可以在括号里写
form.show();
要全部推出就添加一个closing事件就行了
form.show();
要全部推出就添加一个closing事件就行了
#18
顶
#19
顶
#20
1.继承form,自己实现,之后都调用自己的form。
2.form.closing (event)
2.form.closing (event)
#21
form 1 fomr 2做成单态,
然后当关或者最小化form 1 的时候,用form2.show()实现form2的打开,在form2初始化的时候写form1.display == false。
分别给两个窗口添加closing时间,用Application.exit() ,就可以了
然后当关或者最小化form 1 的时候,用form2.show()实现form2的打开,在form2初始化的时候写form1.display == false。
分别给两个窗口添加closing时间,用Application.exit() ,就可以了
#22
to 16楼
错误 1 “System.Windows.Forms.FormClosedEventArgs”并不包含“cancle”的定义
如果用e.cancle=true;的话,会出现上面的错误,是什么原因呢??
错误 1 “System.Windows.Forms.FormClosedEventArgs”并不包含“cancle”的定义
如果用e.cancle=true;的话,会出现上面的错误,是什么原因呢??
#23
需要两步:
一. 要添加Form2_FormClosing事件,在添加此方法之前首先要在Form2的初始化(initialization)中注册此事件
this.FormClosing += //具体代码我打不出来,vs会提示的
二. Form.cs中的代码(手打的,难免有拼写错误):
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("您即将退出系统,您确定吗?","您确定关闭本窗体吗?",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
Application.exit()
}
else
{
e.Cancel;
}
}
一. 要添加Form2_FormClosing事件,在添加此方法之前首先要在Form2的初始化(initialization)中注册此事件
this.FormClosing += //具体代码我打不出来,vs会提示的
二. Form.cs中的代码(手打的,难免有拼写错误):
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("您即将退出系统,您确定吗?","您确定关闭本窗体吗?",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
{
Application.exit()
}
else
{
e.Cancel;
}
}
#24
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("是否关闭", "系统提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
return;
}
else
e.Cancel = true;
}
{
if (MessageBox.Show("是否关闭", "系统提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
return;
}
else
e.Cancel = true;
}
#25
不是很完整
不过看了之后有了更进一步的了解
谢谢
不过看了之后有了更进一步的了解
谢谢
#26
这么好的帖子 还不解题。白眼狼 ,我倒是要谢谢这些高手了。基本上满足我现在的需求了
#27
还行吧如从form1 form=new form1();
form.Show();
form.Show();
#28
#5楼 得分:5回复于:2009-03-14 18:05:011.如果在Form1的窗体上添加一个跳转至Form2的按钮
2.然后双击该按钮,在它的单击事件中添加这些代码
3.Form2 form2 = new Form2();
form2.show();
即可实现从窗体1跳转至窗体2
4.关闭窗体
这个很好!以前经常这样干。。。
2.然后双击该按钮,在它的单击事件中添加这些代码
3.Form2 form2 = new Form2();
form2.show();
即可实现从窗体1跳转至窗体2
4.关闭窗体
这个很好!以前经常这样干。。。
#29
不错
#30
这个有问题吧。在询问是否退出后,调用application.exit。而application.exit有会调用所有form的formclosing方法。那么又会弹出messagebox继续询问,而后才能退出,显然这是不行的。
参考MSDN如下:
Exit 方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。 该方法并不强制退出该应用程序。Exit 方法通常从一个消息循环内调用,该方法强制 Run 返回。 若要只退出当前线程的某个消息循环,请调用 ExitThread。
Exit 引发下列事件并执行关联的条件操作:
为 OpenForms 属性表示的各个窗体引发 FormClosing 事件。 可以通过将这些窗体的 FormClosingEventArgs 参数的 Cancel 属性设置为 true,取消此事件。
如果多个处理程序的其中之一取消该事件,则 Exit 将返回而无进一步操作。 否则,将为每个打开的窗体引发 FormClosed 事件,然后关闭所有正在运行的消息循环和窗体。