Переключение между формами - PullRequest
0 голосов
/ 26 марта 2012

У меня есть форма входа в мое приложение. После ввода правильного имени пользователя и пароля я хочу закрыть форму входа в систему и открыть основную форму. У меня были проблемы с этим, поэтому я использовал быстрое исправление и закодировал его так, чтобы успешный вход в систему означал, что свойство Visible формы входа было установлено в false (создавая впечатление, что оно закрыто для пользователя). Но я не доволен этим решением, поскольку оно означает, что форма входа всегда открыта.

Код, который у меня есть в моем frmLogIn:

Form fM = new frmMain();
this.Visible = false;
fM.Show();

Как мне изменить это так, чтобы frmLogIn фактически закрывался при открытии frmMain?

PS. Я также пробовал этот код из другой ветки на этих форумах, но это тоже не работает.

Form fM = new frmMain();
fM.Location = this.Location;
fM.StartPosition = FormStartPosition.Manual;
fM.FormClosing += delegate { this.Show(); };
fM.Show();
this.Hide(); 

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Я бы порекомендовал сделать это по-другому: в MainForms - загруженное событие покажите (модальное) диалоговое окно входа в систему, и если пользователь не вошел в систему, среагируйте на это.*

void FormLoad(...)
{
    var dlg = new LoginDialog();
    dlg.ShowDialog();

    if (!dlg.UserLogedIn)
    {
       // react ....
       this.Close();
    }
}
1 голос
/ 26 марта 2012

Так скажем, вы находитесь в основных приложениях формы Load event. Здесь вы можете запустить свой экран входа в систему

LoginForm logForm = new LoginForm();
logForm.ShowDialog();

Тогда вы можете узнать, передал ли логин соответствующий аксессор logForm, поэтому в logForm закрывающем событии

this.passedLogin = true;
this.Close();

и затем в главном событии Load load после ShowDialog() выше, вы можете проверить, прошел ли вход в систему, не закрыл ли приложение или принудительно повторить попытку

if (!logForm.passedLogin)
    this.Close();

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...