首页 > 技术文章 > WinFrom 登录窗体 密码保存效果

yhyjy 2014-04-25 12:08 原文

        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         }
View Code

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         }

以上 就是 WinForm 保存密码 功能的所有代码 

 Demo地址:https://files.cnblogs.com/yhyjy/%E8%AE%B0%E4%BD%8F%E5%AF%86%E7%A0%81.zip

以上供新手参考 如有好的方式 请留下您宝贵的思想与建议

推荐阅读