Сложность заключается в том, какую форму вы передаете методу Application.Run (). Если вы запустите приложение с экземпляром формы входа в систему, а затем закроете эту форму, я думаю, что приложение закроется. Без сомнения, есть несколько способов справиться с этим ...
Один из способов - передать экземпляр вашей основной формы в метод Application.Run (это связывает цикл сообщений с этим экземпляром формы, а не с формой входа в систему). В методе OnLoad главной формы вы можете использовать модальное диалоговое окно для входа в систему. т.е.
//--Main form's OnLoad method
protected override void OnLoad(EventArgs ea)
{
// Remember to call base implementation
base.OnLoad(ea);
using( frmLogin frm = new frmLogin() )
{
if( frm.ShowDialog() != DialogResult.OK )
{
//--login failed - exit the application
Application.Exit();
}
}
}