用户登录框架
主体:Login窗体、主窗体、其他窗体
思路:1、创建login窗体和DialogResult成员变量,DialogResult成员变量用于接收Login窗体的DialogReslut返回结果
2、登录(数据校验、封装用户对象、数据库交互、结果返回)
3、创建一个全部变量用于存储用于存储用户信息(最好是对象类型(用户的信息实体类))
4、获取结果为DialogResult.OK,显示登录信息
实现
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//创建登录窗体
FrmUserLogin objLogin = new FrmUserLogin();
DialogResult result = objLogin.ShowDialog();
//登录成功显示主窗体
if (result == DialogResult.OK)
Application.Run(new FrmMain());
else
Application.Exit();
}
//全局变量用于存储用户登录信息
public static Admin currentAdmin = null;
}
登录窗体objLogin以ShowDialog()的形式显示,当获取的用户登录信息实例不为null时,表示登录成功,显示主窗体。获取用户登录时,要做数据验证(非空、数字、字母等)
private void btnLogin_Click(object sender, EventArgs e)
{
#region 数据验证
//数据验证、非空验证、非法字符验证、数据类型验证
if (txtLoginId.Text.Trim().Length == 0)
{
MessageBox.Show("请输入用户ID", "提示");
this.txtLoginId.Focus();
return;
}
if(!DataValiddateManeger.IsInteger(txtLoginId.Text.Trim()))
{
MessageBox.Show("请输入整数类型的用户ID", "提示");
this.txtLoginId.Focus();
this.txtLoginId.SelectAll();
return;
}
if (txtLoginPwd.Text.Trim().Length == 0)
{
MessageBox.Show("请输入用户密码", "提示");
this.txtLoginPwd.Focus();
this.txtLoginPwd.SelectAll();
return;
}
#endregion
//封装数据对象
Admin objAdmin = new Admin()
{
LoginId = Convert.ToInt32(txtLoginId.Text.Trim()),
LoginPwd = txtLoginPwd.Text.Trim()
};
try
{
Program.currentAdmin = new AdminManeger().AdminLogin(objAdmin);//查询用户,后台交互
if (Program.currentAdmin!= null)
{
this.DialogResult = DialogResult.OK;//用户登录成功给当前窗体的DialogResult赋值
this.Close();//如果登录成功则关闭当前页面
}
else
{
MessageBox.Show("用户账户或密码错误", "提示");
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message + "操作异常");
//this.DialogResult = DialogResult.No;
//this.Close();
}
}