打开新窗口时,如何防止WPF应用程序关闭主窗口?

时间:2014-02-05 04:54:06

标签: c# wpf

我使用此方法从主窗口显示另一个窗口。

   public void DisplayLobbyWindow()
    {
        var d = Application.Current.Dispatcher;

        if (d.CheckAccess())
        {
            new LobbyWindow()
            {
                Owner = this
            }.Show();

            this.Close();
        }
        else
        {
            d.BeginInvoke((Action)DisplayLobbyWindow);
        }
    }

但是,当我显示新应用程序时,主应用程序将关闭。我不希望它关闭,我只是想让第一个窗口消失并显示下一个窗口。怎么可能?感谢。

编辑:我想这可能是因为所有者属性设置为主窗口 - 但我需要它在主窗口的位置启动,所以我将所有者设置为它。有解决方法吗?

1 个答案:

答案 0 :(得分:1)

修改代码以隐藏窗口。您还可以指定启动位置,因为您说您希望新窗口弹出旧窗口所在的位置。

public void DisplayLobbyWindow()
{
    ...
        new LobbyWindow()
        {
            Owner = this,
            WindowStartupLocation = WindowStartupLocation.CenterOwner
        }.Show();

        this.Hide();
    ...
}

然后在您的第二个表单中,订阅Closed事件:

<Window x:Class="WpfApplication1.LobbyWindow"
    Title="LobbyWindow" Closed="LobbyWindow_OnClosed">

这样您就可以再次显示第一个表格。否则,将显示第二个窗口,您的应用将继续运行,不可见。

 private void LobbyWindow_OnClosed(object sender, EventArgs e)
 {
     Owner.Show();
 }