转载:http://www.cnblogs.com/yhyjy/p/3688466.html
WinFrom 登录窗体 保存密码效果 开发CS程序的程序员都会遇到 今天突然想把这个功能加到我的项目中 之后总结下 不多说 上图
如果关闭程序 下次在登录的时候 用户名、密码会自动保留下来 一个类(User) 一个方法(DisplayUserInfo) 代码分为4个事件
1、User 类
1 [Serializable]
2 public class User
3 {
4
5 private string loginID;
6 public string LoginID
7 {
8 get { return loginID; }
9 set { loginID = value; }
10 }
11
12 private string pwd;
13 public string Pwd
14 {
15 get { return pwd; }
16 set { pwd = value; }
17 }
18 }
2、DisplayUserInfo 方法
1 //显示用户所对应匹配的信息
2 private void DisplayUserInfo()
3 {
4
5 string key = combox1.Text.Trim();
6 //查找用户Id
7 if (users.ContainsKey(key) == false)
8 {
9 txtPwd.Text = "";
10 return;
11 }
12 //查找到赋值
13 User user = users[key];
14 txtPwd.Text = user.Pwd;
15 // 如有有密码 选中复选框
16 chkcaes.Checked = txtPwd.Text.Trim().Length > 0 ? true : false;
17 }
3、窗体 Load 事件
1 Dictionary<string, User> users = new Dictionary<string, User>();
2 private void frmMain_Load(object sender, EventArgs e)
3 {
4 //读取文件流对象
5 FileStream fs = new FileStream("data.bin", FileMode.OpenOrCreate);
6 if (fs.Length > 0)
7 {
8 BinaryFormatter bf = new BinaryFormatter();
9 //读出存在Data.bin 里的用户信息
10 users = bf.Deserialize(fs) as Dictionary<string, User>;
11 //循环添加到Combox1
12 foreach (User user in users.Values)
13 {
14 combox1.Items.Add(user.LoginID);
15 }
16
17 //combox1 用户名默认选中第一个
18 if (combox1.Items.Count > 0)
19 combox1.SelectedIndex = combox1.Items.Count-1;
20 }
21 fs.Close();
22 }
4、登录按钮 Click 事件
1 private void butOK_Click(object sender, EventArgs e)
2 {
3 User user = new User();
4 // 登录时 如果没有Data.bin文件就创建、有就打开
5 FileStream fs = new FileStream("data.bin", FileMode.OpenOrCreate);
6 BinaryFormatter bf = new BinaryFormatter();
7 // 保存在实体类属性中
8 user.LoginID = combox1.Text.Trim();
9 //保存密码选中状态
10 if (chkcaes.Checked)
11 user.Pwd = txtPwd.Text.Trim();
12 else
13 user.Pwd = "";
14 //选在集合中是否存在用户名
15 if (users.ContainsKey(user.LoginID))
16 {
17 //如果有清掉
18 users.Remove(user.LoginID);
19 }
20 //添加用户信息到集合
21 users.Add(user.LoginID, user);
22 //写入文件
23 bf.Serialize(fs, users);
24 //关闭
25 fs.Close();
26 MessageBox.Show("保存密码成功!请关闭窗体看效果");
27 }
5、用户名下拉框 SelectedIndexChanged 事件
1 //当用户名下拉选项发生改变时
2 private void combox1_SelectedIndexChanged(object sender, EventArgs e)
3 {
4 DisplayUserInfo();
5 }
6、用户名下拉框 TextChanged事件
1 //当用户名文本发生改变时
2 private void combox1_TextChanged(object sender, EventArgs e)
3 {
4 DisplayUserInfo();
5
6 }