1. 登陸邏輯
- FrmMain 為主窗體(啟動窗體)
- FrmLogin 為登陸窗體
在“主窗體”中使用ShowDialog()方法顯示“登陸窗體”,並通過“登陸窗體”的DialogResult告知“主窗體”是否登陸成功。
1.1 主窗體:
private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
// 執行主窗體的一些初始化內容
}
else
{
this.Close(); // 關閉主窗體
}
}
1.2 登陸窗體:
private vode btn_Login_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
2. 窗體間的資料傳遞
“登陸窗體”在執行完畢後,需要將登陸用的資訊傳遞給“主窗體”,其傳遞的過程就是“暫時”將使用者資訊存在“主窗體”可以獲取的“地方”,根據“地方”不同可以有一下幾種方案。
新建 User.cs
public class User {
public string username;
public User(string username)
{
this.username = username;
}
}
2.1 將資料暫存在“登陸窗體”的Tag屬性上
2.1.1 登陸窗體:
private vode btn_Login_Click(object sender, EventArgs e)
{
this.Tag = new User('rianman');
this.DialogResult = DialogResult.OK;
}
2.1.2 主窗體:
private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
User user = frm.Tag as User; // 此處獲取“登陸窗體”傳遞過來的資料
}
else
{
this.Close(); // 關閉主窗體
}
}
2.2 將資料暫存在“主窗體”的Tag屬性上
2.2.1 登陸窗體:
private vode btn_Login_Click(object sender, EventArgs e)
{
FrmMain main this.Owner as FrmMain;
main.Tag = new User("rainman");
this.DialogResult = DialogResult.OK;
}
2.2.2 主窗體:
private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
User user = this.Tag as User; // 此處獲取“登陸窗體”傳遞過來的資料
}
else
{
this.Close(); // 關閉主窗體
}
}
2.3 將資料暫存在類的“靜態成員”上
2.3.1 新建Context.cs
public class Context
{
public static User LoginUser = null;
}
2.3.2 登陸窗體:
private vode btn_Login_Click(object sender, EventArgs e)
{
Context.LoginUser = user;
this.DialogResult = DialogResult.OK;
}
2.3.3 主窗體:
private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
User user = Context.LoginUser; // 此處獲取“登陸窗體”傳遞過來的資料
}
else
{
this.Close(); // 關閉主窗體
}
}
2.4 將資料暫存在“主窗體”的特定屬性上
2.4.1 登陸窗體:
private vode btn_Login_Click(object sender, EventArgs e)
{
FrmMain main = this.Owner as FrmMain;
main.LoginUser = new User("rainman");
this.DialogResult = DialogResult.OK;
}
2.4.2 主窗體:
public user LoginUser { get; set; }
private void FrmMain_Load(object sender, EventArgs e)
{
FrmLogin frm = new FrmLogin();
if (frm.ShowDialog() == DialogResult.OK)
{
User user = this.LoginUser; // 此處獲取“登陸窗體”傳遞過來的資料
}
else
{
this.Close(); // 關閉主窗體
}
}