我使用此方法从主窗口显示另一个窗口。
public void DisplayLobbyWindow()
{
var d = Application.Current.Dispatcher;
if (d.CheckAccess())
{
new LobbyWindow()
{
Owner = this
}.Show();
this.Close();
}
else
{
d.BeginInvoke((Action)DisplayLobbyWindow);
}
}
但是,当我显示新应用程序时,主应用程序将关闭。我不希望它关闭,我只是想让第一个窗口消失并显示下一个窗口。怎么可能?感谢。
编辑:我想这可能是因为所有者属性设置为主窗口 - 但我需要它在主窗口的位置启动,所以我将所有者设置为它。有解决方法吗?
答案 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();
}