实现效果如下
实现过程
[Serializable] class User { //记住密码 private string loginID; public string LoginID { get { return loginID; } set { loginID = value; } } private string pwd; public string Pwd { get { return pwd; } set { pwd = value; } } }
首先新建一个实体类,创建两个字段并封装成对应属性
User user = new User(); // 登录时 如果没有Data.bin文件就创建、有就打开 FileStream fs = new FileStream("data.bin", FileMode.OpenOrCreate); BinaryFormatter bf = new BinaryFormatter(); // 保存在实体类属性中 user.LoginID = comboBoxEx1.Text.Trim(); //保存密码选中状态 if (checkBoxXUser.Checked) user.Pwd = passWordtext.Text.Trim(); else user.Pwd = ""; //选在集合中是否存在用户名 if (users.ContainsKey(user.LoginID)) { //如果有清掉 users.Remove(user.LoginID); } //添加用户信息到集合 users.Add(user.LoginID, user); //写入文件 bf.Serialize(fs, users); //关闭 fs.Close();
然后对选中按钮做判断是否选中,若选中则将用户信息添加到集合中。最后记得关闭文件的读写操作~,到这里已经完成了保存用户信息到集合中了。是不是超简单,不过还没有完。因为我们上面只是保存,我们需要打开窗体或者页面的时候,是需要将用户信息再次
读取出来的。所以下面将是对用户信息的读操作
//读取文件流对象 FileStream fs = new FileStream("data.bin", FileMode.OpenOrCreate); if (fs.Length > 0) { BinaryFormatter bf = new BinaryFormatter(); //读出存在Data.bin 里的用户信息 users = bf.Deserialize(fs) as Dictionary<string, User>; //循环添加到Combox1 foreach (User user in users.Values) { comboBoxEx1.Items.Add(user.LoginID); } //combox1 用户名默认选中第一个 if (comboBoxEx1.Items.Count > 0) comboBoxEx1.SelectedIndex = comboBoxEx1.Items.Count - 1; } fs.Close();
读的话比较简单,就不一一解释了,相信各位能看明白,另外,当中需要引用到的类库是
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;
- 感谢你的阅读。如果你觉得这篇文章对你有帮助或者有启发,就请推荐一下吧~你的精神支持是博主强大的写作动力。欢迎转载!
- 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。
- 欢迎加入.NET 从入门到精通技术讨论群→523490820 期待你的加入
- 不舍得打乱,就永远学不会复原。被人嘲笑的梦想,才更有实现的价值。
- 我的博客:http://www.cnblogs.com/zhangxiaoyong/