gpt4 book ai didi

c# - 关闭主窗口后如何显示新窗口?

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:59 25 4
gpt4 key购买 nike

我正在尝试做这篇文章中描述的事情,显示一个登录窗口,当用户成功登录时,关闭它并打开应用程序的主窗口。

If the user logs on successfully, then I want to show the main window, if not, I want to exit the application

但提供的答案(在发布此问题时)对我不起作用,因为我显示窗口的代码是从 App.cs 运行的。

我知道原因,因为启动的第一个窗口自动设置为应用程序的主窗口,当我对其调用 Close() 时,它退出了应用程序。所以第二个窗口没有机会打开。

我的问题是如何克服这个问题?还是这根本不可能像我描述的那样?

public partial class App : Application
{
public App(){}

private void Application_Startup(object sender, StartupEventArgs e)
{
LoginScreen f = new LoginScreen(); //becomes automatically set to application MainWindow
var result = f.ShowDialog(); //View contains a call to Close()

if (result == true) //at this point the LoginScreen is closed
{
MainWindow main = new MainWindow();
App.Current.MainWindow = main;
main.Show(); //no chance to show this, application exits
}
}
}

最佳答案

您可以将应用程序关闭模式更改为 OnExplicitShutdown,然后随时调用 Application.Shutdown(0)。例如:

public App()
{
App.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
}

protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);

if (MessageBox.Show("Continue?", "", MessageBoxButton.YesNo) == MessageBoxResult.No)
App.Current.Shutdown(0);
}

在构造函数中,我正在更改应用程序关闭模式并在需要时调用 Shutdown 方法。

警告:当您更改ShutdownMode 时,请务必调用Shutdown 方法,否则即使在主窗口关闭后您的应用程序仍将保留在内存中。我已经在我的 MainWindow 中覆盖了 OnClosed 方法来做到这一点:

protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
App.Current.Shutdown(0);
}

关于c# - 关闭主窗口后如何显示新窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52213874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com