Main窗體為應用程式主窗體,Login為登錄窗體。均為SDI窗體。
兩種實現方式如下:
1、應用程式入口放在Login窗體,在Login窗體實現登錄機制,驗證通過則創建Main窗體的實例,並將自身隱藏。
具體實現:
///Step1:驗證登錄
///Step2:通過
this.hide();
oMain.Show();
雖然可以實現登錄機制,但是Login窗體並沒有釋放掉,而是被隱藏掉,內存資源未有效利用。這種方式其實是不可取的。
2、應用程式入口放在Main窗體,在Main函數中創建Login窗體的實例,Login窗體完成登錄驗證,返回Main窗體,程式繼續執行。需要注意的是Login窗體只有驗證通過時返回值才為DialogResult.OK,其余時返回DialogResult.None。這樣在Main窗體就可以根據返回值判斷是否創建Main窗體的實例。
/// <summary>
/// 應用程序的主入口點。
/// </summary>
[STAThread]
static void Main()
{
frmLogin login = new frmLogin();
login.ShowDialog();
if(login.DialogResult.Equals(DialogResult.OK))
{
login.Close();
Application.Run(new frmMain());
}
}
登陸窗體,驗證成功執行代碼 this.DialogResult=DialogResult.OK;