Форма не открывается как активное окно

У меня есть основная форма 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 была отключена, а форма входа активирована. .
Как этого добиться?


person CWW    schedule 06.12.2018    source источник
comment
Используйте модальную форму, как предлагает ответ. Вы можете открыть его в событии Shown() вашей формы MDI.   -  person Jimi    schedule 06.12.2018


Ответы (1)


используйте ShowDialog() вместо Show().

E.g.

newLogin.ShowDialog()

И затем вы должны добавить проверку на форму входа в систему, если она закрыта без аутентификации пользователя, она должна закрыть все приложение, или, альтернативно, вы можете скрыть строку заголовка.

person Mihir Dave    schedule 06.12.2018