我们平时用的QQ、飞信、微信等等,都有一个登陆界面,我们今天就做了一个简单的登陆窗体,在关注登陆窗体的时候,我们要知道,登录窗体只是一个界面、一个验证的过程,重要的还是登陆以后在主窗体上我们要干什么。

在登陆之后,转到主窗体,开始进行我们要干的事,在这里我们是要把登录窗体的登陆名传到主窗体上。这里我们的传递是通过类传递的(对窗体的具体操作都在类中),类之间传递参数或值得时候有五种方法:构造方法、公开的字段、公开的属性、公开的方法、委托。

先看我们做的登陆窗体:

231619189.png

下来我们就要写登陆窗体中的各种Click事件,并在登陆成功后将登录窗体中的登录名传递到主窗体中去:

//声明一个委托用来传值
public delegate void SendLoginIdHandler(string loginId);
public partial class frmLogin : Form
{
//定义一个事件
public event SendLoginIdHandler SendLoginIdEvent;
public frmLogin()
{
InitializeComponent();
}
bool flag = false;
/// <summary>
/// 确定按钮的Click事件,我们要通过点击确定按钮,
/// 来触发这个事件,并判断输入的用户名和密码是否正确
/// 在这里我们就先默认用户名和密码都是admin是输入正确
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{
//获取用户输入的值
string loginId = this.txtLoginId.Text;
string loginPwd = this.txtLoginPwd.Text;
//判断用户名和密码是否正确,不正确的话显示一个模态窗体并显示登录名或密码错误
if (!(loginId=="admin"&&loginPwd=="admin"))
{
MessageBox.Show("登录名或密码错误");
//登录名或密码错误后返回,让用户重新输入
return;
}
//如果能走到这一步,说明输入正确,登陆就可以结束了,登录窗体关闭,下面就显示主窗体
flag = true;
//如果事件不是空的,就激发事件
if (SendLoginIdEvent!=null)
{
SendLoginIdEvent(loginId);
}
this.Close();
}
/// <summary>
/// 登录窗体的FormClosing事件,当flag==false的时候,说明登录失败,
/// 那么接下来在关闭登录窗体的时候,退出整个应用程序。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void frmLogin_FormClosing(object sender, FormClosingEventArgs e)
{
if (flag==false)
{
Application.Exit();
}
}
/// <summary>
/// 取消按钮的Click事件,点击关闭登陆窗体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCancel_Click(object sender, EventArgs e)
{
this.Close();
}

下面来看主窗体中的代码:

public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
//创建一个登录窗体的对象
frmLogin frm = new frmLogin();
//订阅事件
frm.SendLoginIdEvent += new SendLoginIdHandler(frm_SendLoginIdEvent);
//显示登录窗体
frm.ShowDialog();
}
void frm_SendLoginIdEvent(string loginId)
{
//通过委托传进来的值
this.label1.Text = loginId;
}

002257541.png

这个就是登陆成功后传进来的登录名。

P.S.登录窗体:1:不要太大,没有最小化和最大化按钮;(要美观,我们平时见到的登录窗体都大小适中)

2:要固定大小;(Windows窗体要报位置固定好)

3:窗体在正中间;

4:类名要规范;

5:要注意格式(天高地厚,左青龙右白虎)