C#-WinForm登录窗体实现记住密码的功能(仿QQ实现)
2016-12-06 16:11
866 查看
Winform实现登录窗体中记住密码的功能,模仿QQ登录记住密码的实现
用户名输入框我们采用下拉列表框ComboBox
密码框我们采用textBox,并设置为密码框
设置textBox输入时不显示明文,需要将useSystemPasswordChar改为true,然后multiline设置为false,然后重新生成一下就可以了,因为textbox为显示为密码字符是当textbox为单行编辑的时候,useSystemPasswordchar的设置才会生效,然后我们还可以通过passwordChar设置textbox中以哪种形式来显示你输入的字符,默认是”*”。
实现思路
记住密码功能的常见实现方法有三种:方法一:写入本地数据库
方法二:写入文件——txt、xml、ini
方法三:注册表
我们采用的方式是第二种,其找第二种方式最简单便捷,因此我们采用这种方式实现,主要思路。我们将用户的用户名和密码已键值对等方式存储在文件中,如果用户选择了记住密码,就将信息写入文件,而在窗体加载的时候,我们读取文件中的内容即可。
用户类操作接口
//要先将User类先设为可以序列化(即在类的前面加[Serializable]) [Serializable] public class User { //public User(string username, string password) //{ // this.userName = username; // this.passWord = password; //} private string userName; public string Username { get { return userName; } set { userName = value; } } private string passWord; public string Password { get { return passWord; } set { passWord = value; } } }
在窗体加载的时候,读取文件信息,并且绑定到用户名comboBox上
private void Login_Load(object sender, EventArgs e) { // 读取配置文件寻找记住的用户名和密码 FileStream fs = new FileStream("data.bin", FileMode.OpenOrCreate); if (fs.Length > 0) { BinaryFormatter bf = new BinaryFormatter(); users = bf.Deserialize(fs) as Dictionary<string, User>; foreach (User user in users.Values) { this.UserName.Items.Add(user.Username); } for (int i = 0; i < users.Count; i++) { if (this.UserName.Text != "") { if (users.ContainsKey(this.UserName.Text)) { this.PassWord.Text = users[this.UserName.Text].Password; this.RemeberPassword.Checked = true; } } } } fs.Close(); // 用户名默认选中第一个 if (this.UserName.Items.Count > 0) { this.UserName.SelectedIndex = this.UserName.Items.Count - 1; } //item = (List<User>)bUser.GetAll(); //item = //this.UserName.DataSource = item; //this.UserName.DisplayMember = "Username"; }
当用户选择了用户名时候,密码框中显示对应密码
private void UserName_SelectedValueChanged(object sender, EventArgs e) { // 首先读取记住密码的配置文件 FileStream fs = new FileStream("data.bin", FileMode.OpenOrCreate); if (fs.Length > 0) { BinaryFormatter bf = new BinaryFormatter(); users = bf.Deserialize(fs) as Dictionary<string, User>; for (int i = 0; i < users.Count; i++) { if (this.UserName.Text != "") { if (users.ContainsKey(UserName.Text) && users[UserName.Text].Password != "") { this.PassWord.Text = users[UserName.Text].Password; this.RemeberPassword.Checked = true; } else { this.PassWord.Text = ""; this.RemeberPassword.Checked = false; } } } } fs.Close(); }
用户点击登录时,记录密码或者用户名信息
private async void Submit_Click(object sender, EventArgs e) //登陆验证 { string username = this.UserName.Text.Trim(); string password = this.PassWord.Text.Trim(); User user = new User(); FileStream fs = new FileStream("data.bin", FileMode.Create); BinaryFormatter bf = new BinaryFormatter(); user.Username = username; if (this.RemeberPassword.Checked) // 如果单击了记住密码的功能 { // 在文件中保存密码 user.Password = password; } else { // 不在文件中保存密码 user.Password = ""; } // 选在集合中是否存在用户名 if (users.ContainsKey(user.Username)) { users.Remove(user.Username); } users.Add(user.Username, user); //要先将User类先设为可以序列化(即在类的前面加[Serializable]) bf.Serialize(fs, users); //user.Password = this.PassWord.Text; fs.Close(); /////// /////// 这里填写登录的处理逻辑代码 /////// };
相关文章推荐
- C#-WinForm登录窗体实现记住密码的功能(仿QQ实现)
- C# winform 登录窗体 记住密码的实现 --来源http://www.cnblogs.com/ou444/archive/2011/09/13/2174911.html
- winform登录窗体实现记住密码功能
- Winform实现登录窗体记住密码的功能
- C#序列化实现用户登录记住账号密码功能
- C#如何实现记住密码,自动登录功能?【转载】
- Flex中如何实现类似像QQ登录框中那种“记住密码”、“自动登录”功能,还有如何实现文本框中记录最后一次输入的值?
- [置顶] 仿qq实现的记住密码和下拉框功能,简单易懂,还有背景炫酷的登录背景动画功能还有扫码
- C#类似QQ窗体抖动功能的实现
- C# WinForm如何读写XML(以实现如何像QQ登录窗口那样为例 记住密码 下次不用重输密码)
- 所有系统已经实现单点登录及记住密码功能
- flex 登录时记住用户名和密码功能实现
- 引用借以记录借鉴 实现记住密码和自动登录功能
- 登录时简单的记住密码和自动登录功能实现
- winform实现任务栏隐藏、通知栏图标及右键、类似QQ隐藏窗体等功能
- flex 登录时记住用户名和密码功能实现
- C# 如何实现记住密码功能
- C#的XML实现记住密码功能
- C# 如何实现记住密码功能
- 用delphi实现qq在Web登录的密码客户端加密功能.