我认为这是 WPF 框架中的一个错误,没有深入了解我的程序以及我为什么要做我正在做的事情,我编写了一个简单的测试应用程序来证明我的理论。
这个问题可以确认吗?在将应用程序放入其运行循环之前执行一系列对话框的可能解决方法是什么?
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Windows;
namespace ShowDialogWindow
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
Window testWindow = new Window();
testWindow.ShowDialog();
testWindow.Close();
// THE CODE BELOW WILL NOT SHOW THE NEXT WINDOW
Window testWindow2 = new Window();
testWindow2.ShowDialog();
testWindow2.Close();
}
}
}
更新:
当然我可以改变我的设计来适应这种行为。然而,我想要做的其实很简单。
我导出了我的
MyApplication
来自 Application
.在 Main()
,我启动了一系列的启动检查,例如,许可证信息、闪屏、连接和配置检查等。当我明白了,我调用 MyApplicatiom.Run(MyMainForm)
.此设计基于正常运行的正常 Windows 应用程序。
非常感谢您的帮助,我会记住您不能调用
ShowDialog()
之前 application.Run()
因为它只是初始化关机。然而,我原以为关闭序列只应在 App.Run()
之后启动。操作说明。如果我理解错误,请纠正我。
最佳答案
不是错误。默认 ShutdownMode
的 Application
是 OnLastWindowClosed
,所以一旦第一个窗口关闭,您的应用程序就会开始关闭!更改为 OnExplicitShutdown
它会工作,但你必须管理关机。
我认为您可能只需要重新考虑您实际想要实现的目标。为什么在应用程序启动期间会显示两个后续对话框窗口?
关于WPF ShowDialog 在第二次调用时立即返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1243833/