【问题标题】:Form doesn't open as the active window表单未作为活动窗口打开
【发布时间】:2018-12-06 11:27:26
【问题描述】:

我的应用程序中有一个主 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 表单并激活登录表单。
如何做到这一点?

【问题讨论】:

  • 使用模态表单,正如答案所暗示的那样。您可以在 MDI 表单的 Shown() 事件中打开它。

标签: c# winforms mdiparent openform


【解决方案1】:

使用 ShowDialog() 代替 Show()。

例如

newLogin.ShowDialog()

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

【讨论】:

    猜你喜欢
    • 2019-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多