開啟主視窗就用主視窗的Show()方法,而關閉登入視窗就用登入視窗的Close()方法即可。
即程式碼如下:
Program.cs中程式碼:
Application.Run(new
FormLogin());
登入視窗(FormLogin)程式碼:
private void button1_Click(object sender,
EventArgs e)
{
if (textBox1.Text == "a") { //驗證使用者名稱密碼
FormMain fm = New FormMain();
fm.Show();
//開啟主視窗
this.Close(); //關閉登入視窗
}
事實證明,這種辦法是行不通的。因為主視窗是由登入視窗開啟的,所以我們在關閉登入視窗時,主視窗也會被一起關閉。這是一個執行緒樹,或者視窗樹的關係,即一個視窗關閉時,由它開啟的新視窗都將被關閉。
解決辦法是。
FormLogin fl = new
FormLogin();
fl.ShowDialog();
if (fl.DialogResult ==
DialogResult.OK)
FormMain());
else
return;
即先將登入視窗作為一個對話方塊開啟,如果這個對話方塊返回一個DialogResult.OK的值,那麼就表示登入驗證成功了,於是開啟主窗體。如果驗證失敗,則程式結束、退出。
在登入窗體(FormLoin)中程式碼:
if (textBox1.Text == "aaa") { //驗證使用者名稱密碼成功
this.DialogResult = DialogResult.OK; //返回一個登入成功的對話方塊狀態
開啟主視窗就用主視窗的Show()方法,而關閉登入視窗就用登入視窗的Close()方法即可。
即程式碼如下:
Program.cs中程式碼:
Application.Run(new
FormLogin());
登入視窗(FormLogin)程式碼:
private void button1_Click(object sender,
EventArgs e)
{
if (textBox1.Text == "a") { //驗證使用者名稱密碼
FormMain fm = New FormMain();
fm.Show();
//開啟主視窗
this.Close(); //關閉登入視窗
}
}
事實證明,這種辦法是行不通的。因為主視窗是由登入視窗開啟的,所以我們在關閉登入視窗時,主視窗也會被一起關閉。這是一個執行緒樹,或者視窗樹的關係,即一個視窗關閉時,由它開啟的新視窗都將被關閉。
解決辦法是。
Program.cs中程式碼:
FormLogin fl = new
FormLogin();
fl.ShowDialog();
if (fl.DialogResult ==
DialogResult.OK)
{
Application.Run(new
FormMain());
}
else
{
return;
}
即先將登入視窗作為一個對話方塊開啟,如果這個對話方塊返回一個DialogResult.OK的值,那麼就表示登入驗證成功了,於是開啟主窗體。如果驗證失敗,則程式結束、退出。
在登入窗體(FormLoin)中程式碼:
private void button1_Click(object sender,
EventArgs e)
{
if (textBox1.Text == "aaa") { //驗證使用者名稱密碼成功
this.DialogResult = DialogResult.OK; //返回一個登入成功的對話方塊狀態
this.Close(); //關閉登入視窗
}
}