所以当我用
Feed newfeed = new Feed(x);
newfeed.Owner = this;
newfeed.Show();
this.Close();
它关闭第一个窗口,调试自动停止,没有错误。没有例外。但当我用
NewFeed.ShowDialog();
它打开第二个窗口,而不是关闭第一个窗口。
我想要的是关闭打开第一个窗口顶部的第二个窗口,然后关闭第一个窗口。
showDialog()
将阻塞,直到对话框窗口关闭后才返回。
如果只想根据当前窗口的位置定位NewFeed
窗口,可以将WindowStartupLocation
设置为WindowStartupLocation.CenterOwner
,然后将Owner
属性设置回Null
并在加载新窗口后立即关闭当前窗口:
Feed newfeed = new Feed(x);
newfeed.Owner = this;
newfeed.WindowStartupLocation = WindowStartupLocation.CenterOwner;
RoutedEventHandler eventHandler = null;
eventHandler += (ss, ee) =>
{
newfeed.Loaded -= eventHandler;
newfeed.Owner = null;
this.Close();
};
newfeed.Loaded += eventHandler;
newfeed.Show();
您还可以将WindowStartupLocation
设置为Manual
,并自己计算和设置新窗口的left
和top
属性。但是使用WindowStartupLocation.CenterOwner
和事件处理程序(如上面的示例所示)可能更简单,并且仍然可以完成工作。