(對於這個答案的目的,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