(对于这个答案的目的,Form1
和Form2
表示类从Windows.Window
继承)
我会建议下列之一方法
方法1:保持Form2
活着,并能显示再次
在这种情况下,您需要在Form1
上创建实例变量:
private Form2 form2;
在你的代码为 “开关” Form2
,这样做:
if(form2 == null)
{
form2 = new Form2();
DependencyPropertyDescriptor.FromProperty(Window.VisibilityProperty,
typeof(Window)).AddValueChanged(form2, Form2_VisibilityChanged);
}
Hide();
form2.Show();
那么这个功能添加到Form1
:
private void Form2_VisiblityChanged(object sender, EventArgs e)
{
if(form2.Visility == Visibility.Hidden) Show();
}
现在,所有你需要做的是内Form2
通话Hide();
将其切换回Form1
。
方法2:关闭Form2
每次
这是一个有点容易打开一个新的实例,并更符合你有什么:
Form2 form2 = new Form2();
form2.Closed += Form2_Closed;
Hide();
form2.Show();
同样,这个功能添加到Form1
:
private void Form2_Closed(object sender, EventArgs e)
{
Show();
}
现在,而不是在0123调用,请致电Close();
这将工作的第二次?我的意思是,多次执行实施? – abramlimpin 2010-04-23 15:28:56
发生错误:未将对象引用设置为对象的实例。 > Form1.Show(); – abramlimpin 2010-04-23 15:42:39
@eibhrum:我根据代码的实际情况修改了这个答案。 – 2010-04-23 15:49:17