Самый простой способ сделать это - сначала показать (используя ShowDialog
, который блокирует, т.е. ждет, пока форма не закроется, прежде чем перейти к следующей строке кода), форму входа в систему. Если вход выполнен успешно, вы располагаете форму входа и затем показываете свою основную форму; если вход не выполнен, вы закрываете приложение.
Если, однако, вы хотите, чтобы ваша основная форма была видна под формой входа в систему (это не является необоснованным требованием), вам необходимо сначала показать основную форму, а затем отобразить форму входа (модально) из метода Основная форма. В WinForms это требует какого-то взлома, так как вы не могли показать форму входа в систему ни из конструктора основной формы, ни из события Load (поскольку основная форма еще не будет видна при появлении формы входа).
WPF может справиться с этим лучше.