2010-04-23 60 views

回答

3

(对于这个答案的目的,Form1Form2表示类从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();

+0

这将工作的第二次?我的意思是,多次执行实施? – abramlimpin 2010-04-23 15:28:56

+0

发生错误:未将对象引用设置为对象的实例。 > Form1.Show(); – abramlimpin 2010-04-23 15:42:39

+1

@eibhrum:我根据代码的实际情况修改了这个答案。 – 2010-04-23 15:49:17

1

WindowVisiblity属性可以设置为Hidden来隐藏它。所以,如果你是在Window1

this.Visibility = Visibility.Hidden; 
Window2 win = new Window2(); 
win.Show(); 

要再次显示窗口,只需改变其Visibility