15 wpf null return showdialog
我认为这是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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当然,我可以改变我的设计,以适应这种行为.我试图做的事情非常简单.
我有我的派生MyApplication
从Application
.在此Main()
,我启动了一系列启动检查,例如,许可证信息,启动画面,连接和配置检查等.当我清楚的时候,我打电话给你MyApplicatiom.Run(MyMainForm)
.
此设计基于一个正常的Windows应用程序,它可以正常工作.
非常感谢你的帮助,我会记得ShowDialog()
以前你不能打电话,application.Run()
因为它只是无关紧要.不过我会想到关机序列只能在一条App.Run()
指令后启动.
如果我理解错了,请纠正我.
Ken*_*art 27
不是错误.默认ShutdownMode
的Application
就是OnLastWindowClosed
,所以只要第一窗口关闭您的应用程序将启动关闭!改为OnExplicitShutdown
,它会工作,但你必须管理关机.
我想你可能只需要重新思考你实际想要实现的目标.为什么在应用程序启动期间会显示两个后续对话框窗口?
对于遇到同样问题的任何人,以下是解决该问题的方法:
public App()
{
// Preserve and temporarily switch shutdown mode
var oldShutdownMode = ShutdownMode;
ShutdownMode = ShutdownMode.OnExplicitShutdown;
var dialog = new Window();
var result = dialog.ShowDialog();
dialog = new Window();
result = dialog.ShowDialog(); // This will show!
// Reset shutdown mode to original value
ShutdownMode = oldShutdownMode;
}
Run Code Online (Sandbox Code Playgroud)