c# - 如何关闭窗口窗体并将控制转移到另一个窗体?

标签 c# winforms

我在申请中遇到了问题。我有两种形式,一种在我的应用程序启动时加载,要求输入密码,另一种在用户使用正确密码登录时显示。

如何关闭登录表单并让用户继续到下一个实际申请的表单?

目前我隐藏了登录表单,但需求是关闭登录表单,防止额外处理。但是,当我关闭登录表单时,我的应用程序退出,当我隐藏登录表单但关闭实际应用程序表单时,登录表单保持打开状态并阻止我的应用程序关闭,因为登录表单仍在后台运行。

如何解决这个问题?

最佳答案

我通常处理这个问题的方法是编写类似于 main 方法中的代码;

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    if (PerformLogin())
    {           
        Application.Run(new MainForm());
    }
}

private static bool PerformLogin()
{
    using (LoginForm loginForm = new LoginForm())
    {
        if (loginForm.ShowDialog() == DialogResult.OK)
        {
            return AuthenticateUser(loginForm.UserName, loginForm.Password);
        }
        else
        {
            return false;
        }
    }
}

由于登录表单是在 PerformLogin 方法中创建和销毁的,因此它不会在内存中保留超过必要的时间。

关于c# - 如何关闭窗口窗体并将控制转移到另一个窗体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2475349/

相关文章:

.net - 如何跟踪任何子控件何时在 WinForms 中获得或失去焦点?

c# - 在 C 和 C# 之间迁移 CRC 计算

c# - DotPeek 无法正确反序列化 dll

c# - 使用IP地址从一台PC向另一台PC发送消息

c# - C# Web 服务中的加密

c# - 如何异步使用 DataAdapter.Fill()?

c# - 如何对称放置按钮?

c# - Winforms .Net 简单数据绑定(bind)不起作用

winforms - ClickOnce 会移植到 .NET Core 3 或 .NET 5 以及 WinForms 吗?

c# - .net 使用什么哈希算法? java呢?