Я предпочитаю использовать ApplicationContext для такого типа входа в форму <-> поведение переключения формы оболочки.
Ваш основной метод:
public static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MyFancyContext());
}
И реализация для MyFancyContext
:
public class MyFancyContext : ApplicationContext
{
private LogOnForm logOnForm;
private ShellForm shellForm;
public MyFancyContext()
{
this.logOnForm = new LogOnForm();
this.MainForm = this.logOnForm;
}
protected override void OnMainFormClosed(object sender, EventArgs e)
{
if (this.MainForm == this.logOnForm
&& this.logOnForm.DialogResult == DialogResult.OK)
{
// Assume the log on form validated credentials
this.shellForm = new ShellForm();
this.MainForm = this.shellForm;
this.MainForm.Show();
}
else
{
// No substitution, so context will stop and app will close
base.OnMainFormClosed(sender, e);
}
}
}
MainForm
- это форма, которая в настоящее время принимает сообщения.
Преимущество этого типа настройки заключается в том, что если вы хотите сделать такие вещи, как скрыть форму оболочки после некоторого простоя и заново отобразить форму входа в систему, у нас есть один класс, где эта функциональность имеет место.