表单未作为活动窗口打开

时间:2018-12-06 11:27:27

标签: c# winforms mdiparent openform

我的应用程序中有一个主要的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主界面仅在我单击登录表单时才禁用。我想克服这一点。 我想打开我的MDI表单并激活登录表单。
如何实现呢?

1 个答案:

答案 0 :(得分:2)

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

例如

newLogin.ShowDialog()

然后,如果在关闭登录表单时未对用户进行身份验证,则应添加一个检查表单,以关闭整个应用程序,否则,您可以隐藏标题栏。