2010-04-23 72 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