WinFrom 登录窗体 密码保存效果

        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

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

posted @   Elite_Y  阅读(4282)  评论(4编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
历史上的今天:
2013-04-25 用JS 设置 控件 属性
点击右上角即可分享
微信分享提示