WPF 创建同级窗口并关闭当前窗口

2024-06-19

我需要的是我的窗口类中的这样一个事件处理程序。

void someEventHandler(object sender, RoutedEventArgs e)
{
    MyNewWindow mnw = new MyNewWindow();
    mnw.Owner = Window.GetWindow(this);
    mnw.ShowDialog();
    this.Close();
}

Window.GetWindow(this) 返回当前窗口的父窗口。

我本来以为当新窗口的所有者是当前窗口的父窗口时,它会等待父窗口;而不是当前的。但事实并非如此。当前窗口等待新窗口的执行并仅在执行后关闭。

如果由于某种原因我使用 Show() 而不是 ShowDialog() ,则窗口根本不会显示。

也许我需要一些委托方法,但我不知道从哪里开始。

编辑:我想我需要改进这个问题以供将来参考: 新窗口应该是父窗口的对话框。如果我使用 Show() 父窗口就可以访问,但我不希望这样。如果我使用 ShowDialog() 它会成为当前窗口的对话框,这意味着当前窗口在新窗口关闭之前不会关闭,我也不希望这样。


关闭窗口会导致其拥有的任何窗口待关闭 http://msdn.microsoft.com/en-us/library/system.windows.window.close.aspx.

如果您只是想让所有者窗口不可见,请尝试此操作;

void someEventHandler(object sender, RoutedEventArgs e)
{
    MyNewWindow mnw = new MyNewWindow();
    mnw.Owner = this;
    this.Hide(); // not required if using the child events below
    mnw.ShowDialog();
}

您可能希望在父窗口中连接一些事件,当您根据需要关闭子窗口时,该事件会相应地起作用。

EDIT

您也许可以控制(多个父母)对孩子的隐藏;

void OnLoad(object sender, RoutedEventArgs e)
{
  this.Owner.Hide();
}
void Closed(object sender, RoutedEventArgs e)
{
  this.Owner.Show();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 创建同级窗口并关闭当前窗口 的相关文章

随机推荐