在Startup-Event中显示多个窗口
本文关键字:窗口 显示 Startup-Event | 更新日期: 2023-09-27 18:13:44
我有一个应用程序与2个Windows。我在App.xaml中删除了StartupUri
。相反,我订阅了Startup
-Event来显示我的Windows。
我的两个窗口叫做Login
和MainWindow
。
在Startup
-Event中,我有以下代码:
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();
}
}
当我启动我的应用程序登录窗口出现。在登录窗口上只有一个Button
。当点击这个Button
时,将执行以下代码:
private void ButtonClick(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
我的期望是现在,在登录窗口点击Button
主窗口出现。相反,整个应用程序被终止。
如果我在if (dialogResult.HasValue && dialogResult.Value)
的StartUp-Event中设置了一个断点,我可以输入括号,括号中的代码正在执行,但是主窗口没有出现。
知道为什么会这样吗?
我可以通过在登录窗口的点击事件中调用主窗口来解决这个问题。
var mainWindow = new MainWindow();
mainWindow.Show();
Close();
你可能会感兴趣。它指向的参考文献,我认为它描述了一个类似于你所描述的问题。
基本上,打开的第一个窗口被认为是应用程序的主窗口。我建议你应该把你的MainWindow
作为默认值,并在MainWindow
的Loaded
事件中打开你的登录窗口-如果登录不成功,那么关闭主窗口(在它有机会打开之前)。
这是因为你的应用程序的关闭属性通常设置为"OnLastWindowClose"。
所以,你必须在你的登录窗口被关闭之前实例化你的主窗口或者改变Shutdown-Property