表单未作为活动打开 window

Form doesn't open as the active window

我的应用程序中有一个主 MDI 窗体和一个登录窗体。我正在这样打开我的应用程序。我想将登录作为活动窗体打开,在我的登录窗体打开时,用户不应在其中单击 MDI 父窗体的任何控件。 我在 MDI 表单中打开我的登录表单。

Form newLogin = new FormControllers.FrmLogin();
newLogin.StartPosition = FormStartPosition.CenterScreen;
newLogin.Show(this);
newLogin.Focus();
newLogin.TopMost = true;
newLogin.Activate();

那么这是我在登录表单中使用的代码:

public void activateParent() 
{
    if (this.Owner != null)
    {
        this.Owner.Enabled = true;
    }
}

private void FrmLogin_Activated(object sender, EventArgs e)
{
    if (this.Owner != null)
    {
        this.Owner.Enabled = false;
    }
}

private void FrmLogin_Deactivate(object sender, EventArgs e)
{
    activateParent();
}

private void FrmLogin_FormClosing(object sender, FormClosingEventArgs e)
{
    activateParent();
}

当我 运行 程序登录表单打开时仍然如此,但不是活动表单。在我 运行 我的程序之后就可以访问我的 MDI 表单控制器。
我的 MDI 主要功能仅在我单击登录时禁用 form.I 想克服这个问题。
我想打开禁用的 MDI 表单并激活登录表单。
如何实现?

使用 ShowDialog() 而不是 Show()。

例如

newLogin.ShowDialog()

然后你应该在登录表单上添加一个检查,如果它在没有验证用户身份的情况下关闭,它应该关闭整个应用程序,或者你可以隐藏标题栏。