c#窗体调用的问题

来源:百度知道 编辑:UC知道 时间:2024/06/07 23:08:58
通过第一个窗体调用第二个窗体,同时关闭第一个窗体,我采用代码是:
Form1 frm=new from1();
frm.close();
form2 frm=new form2();
frm2.show();
结果打开第二个窗体,第一个窗体没有关掉
修改后采用:this.close();结果两个窗体都关掉了
这是为什么?怎么修改?
额,我是用button控制的,就是说在按下form1里的button,打开form2,关闭form1

form1中 在你的Button的点击事件中添加如下代码
this.hide();
form2 frmnew=new form2();
frmnew.show();
这样就可以了

如果关闭了form1 就不能将form2打开了
你可以选择隐藏和不显示

Form1 frm=new from1();
frm.close();
//这个是新实例化了一个窗体,frm.close()关闭的是你新实例化的那个窗口。
This.close()关闭的是Form1;
//检查一下你的Program.cs文件,你会看到你程序的入口是Application.Run(new Form1());关闭Form1意味着把整个Application关闭了,当然不会执行到下面的Form2.show了

解决的方法就是将Form1.hide()只是将Form1隐藏了而不是关闭掉!

Form2 frm2= new Form2();
frm2.Tag = this;
this.Hide();
frm2.ShowDialog();

frm2.Tag=this是把Form1的Tag保存下来,如果想把Form2关闭后再显示,保存的Tag就有用了.
private void Form2_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
((Form1)this.tag2).Show();
}

Form1 frm=new Form1();
frm.ShowDialog();
把Button的DiaologResult值设为OK
if(DialogResult.OK==frm.DialogResult)
{
Form2 f