使second
成爲父窗口類的實例變量,並且只創建一個新窗口(如果尚未創建)。
當然,第二個窗口關閉時,您需要確保null
實例變量。
public class ParentWindow ...
{
private SecondWindow m_secondWindow = null;
....
private void btnF4_Click(object sender, RoutedEventArgs e)
{
if (m_secondWindow == null)
{
m_secondWindow = new SecondWindow();
m_secondWindow.Closed += SecondWindowClosed;
m_secondWindow.Show();
}
}
public void SecondWindowClosed(object sender, System.EventArgs e)
{
m_secondWindow = null;
}
}
這可能縮短爲以下幾點:
public class ParentWindow ...
{
private SecondWindow m_secondWindow = null;
....
private void btnF4_Click(object sender, RoutedEventArgs e)
{
if (m_secondWindow == null)
{
m_secondWindow = new SecondWindow();
}
m_secondWindow.Show();
}
}
不過,我從來不知道是否你實際上可以「重新打開」那是以前關閉的窗口。如果您需要在重新打開時重新初始化窗口,請使用第一個代碼。如果您可以在開始顯示以前內容的窗口中生活,請使用第二個。
謝謝Thorsten。你是對的,我可以重新打開之前關閉的第二個窗口。也許我必須再次將對象引用設置爲null。 – user3283415
它完美的作品。非常感謝你! – user3283415
@ user3283415:如果有幫助,請接受答案。 –