هنوز سازنده کامل اجرا نشده. میتونید خروج رو به عهده formload بزارید:
bool mustexit;
public FrmMain()
{
InitializeComponent();
using (FrmLogin frmlogin = new FrmLogin())
{
frmlogin.ShowDialog();
if (frmlogin.DialogResult != System.Windows.Forms.DialogResult.OK)
{
mustexit = true;
}
}
}
private void FrmMain_Load(object sender, EventArgs e)
{
if (mustexit)
this.Dispose();
}
که البته چندان جالب نیست. اگر در سازنده کدهای سنگینی ندارید ایجاد فرم لاگین رو در فرم لود انجام بدید.
در کل این که ابتدا فرم اصلی ساخته بشه و بعد فرم لاگین نمایش داده بشه به نظرم درست نیست. به نظر من فرم آغازین فرم لاگین باشه بهتره. در اینصورت میتونید در صورت مجاز بودن کاربر فرم اصلی را در thread دیگری ران کنید و فرم لاگین را dispose کنید(با این کار نخی که فرم لاگین در آن اجرا شده هم از بین میرود)
private void btnLogin_Click(object sender, EventArgs e)
{
// اگر مجاز بود
System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(ShowMainForm));
t.Start();
this.Dispose();
}
private void ShowMainForm()
{
FrmMain frmmain = new FrmMain();
frmmain.ShowDialog();
}