如何在C# WPF中使主窗口等待新打开的窗口关闭?

13

我对WPF和C#都很陌生,请多包容。

我有一个主窗口,它会打开一个新窗口。现在这个新窗口是一个提示框,询问是否要覆盖文件,而主窗口通过访问新窗口的公共变量来检查提示框的结果。

但我无法让主窗口的处理等待直到新窗口关闭。

 Window1 Win = new Window1();
 Win.Show();

 if (Win.pr_res == 1)
 {
      abc.Text = "File to be overwritten";
      File.Delete(_destination);
      Start();
 }
 else
 {
      abc.Text = "Operation Aborted";
 }

我尝试在主窗口中添加一个 while 循环来检查另一个公共布尔值,但这只会使整个程序挂起。

 while(!_closecheck);

欢迎提出改进建议。

4个回答

42

使用ShowDialog而不是Show -

Win.ShowDialog();

来自MSDN

打开一个窗口,只有在新打开的窗口关闭后才返回。


7
使用ShowDialog()方法,因为它打开一个窗口,并在新窗口关闭后才返回。
语法:
Win.ShowDialog();

4

虽然 ShowDialog 可以正常工作,但如果您不喜欢模态窗口,可以设置 MainWindow.IsEnabled = false。有时候看到主窗口是很有用的。


-1

不要使用 .Show() 属性来打开/显示窗口,而是使用 .ShowDialog() 代替 :)


7
这听起来像是对这个已有答案这个已有答案的重复。 - Pang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接