C# 在启动事件中显示多个窗口
我有一个带有两个窗口的应用程序。我删除了App.xaml中的C# 在启动事件中显示多个窗口,c#,wpf,xaml,C#,Wpf,Xaml,我有一个带有两个窗口的应用程序。我删除了App.xaml中的StartupUri。相反,我订阅了启动-事件来显示我的窗口 我的两个窗口分别称为Login和MainWindow 在启动-事件中,我有以下代码: private void App_OnStartup(object sender, StartupEventArgs e) { var login = new Login(); var dialogResult = login.ShowDialog(); if (di
StartupUri
。相反,我订阅了启动
-事件来显示我的窗口
我的两个窗口分别称为Login
和MainWindow
在启动
-事件中,我有以下代码:
private void App_OnStartup(object sender, StartupEventArgs e)
{
var login = new Login();
var dialogResult = login.ShowDialog();
if (dialogResult.HasValue && dialogResult.Value)
{
var mainWindow = new MainWindow();
mainWindow.ShowDialog();
}
}
启动应用程序时,会出现登录窗口。登录窗口上只有一个按钮
。单击此按钮
将执行以下代码:
private void ButtonClick(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
我现在的期望是,单击登录窗口中的按钮
,就会出现主窗口。相反,整个应用程序被终止
如果我在启动事件中的If(dialogResult.HasValue&&dialogResult.Value)
设置断点,我可以输入括号,括号中的代码正在执行,但主窗口不会出现
你知道为什么会这样吗
我可以通过在登录窗口的Click事件中调用Main窗口来解决这个问题,如
var mainWindow = new MainWindow();
mainWindow.Show();
Close();
这是因为应用程序的ShutDown属性通常设置为“OnLastWindowClose” 因此,您必须在关闭登录窗口或更改Shutdown属性之前实例化Main窗口。这可能很有趣。我认为它指出了一个与您所描述的类似的问题 基本上,打开的第一个窗口被视为应用程序的主窗口 我建议您将
main窗口
保留为默认窗口,并在main窗口
的Loaded
事件中打开登录窗口-如果登录不成功,则关闭主窗口(在它有机会打开之前)