我需要的是我的窗口类中的这样一个事件处理程序。
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(使用前将#替换为@)