Winform实现登录窗体中记住密码的功能,如图:
代码如下:
1、窗体Form1加载:
List<UserInfo> item=new List<UserInfo>();
UserInfo userInfo = new UserInfo();
BUserInfo bUserInfo = new BUserInfo();
Dictionary<string, UserInfo> users = new Dictionary<string, UserInfo>();
private void Form1_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, UserInfo>;
foreach (UserInfo user in users.Values)
{
comboBox1.Items.Add(user.UserName);
}
for (int i = 0; i < users.Count; i++)
{
if (comboBox1.Text != "")
{
if (users.ContainsKey(comboBox1.Text))
{
textBox2.Text = users[comboBox1.Text].UserPwd;
checkBox1.Checked = true;
}
}
}
}
fs.Close();
item = (List<UserInfo>)bUserInfo.GetAll();
comboBox1.DataSource = item;
comboBox1.DisplayMember = "UserName";
}
2、选择用户名:
private void comboBox1_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, UserInfo>;
for (int i = 0; i < users.Count; i++)
{
if (comboBox1.Text != "")
{
if (users.ContainsKey(comboBox1.Text) && users[comboBox1.Text].UserPwd != "")
{
textBox2.Text = users[comboBox1.Text].UserPwd;
checkBox1.Checked = true;
}
else
{
textBox2.Text = "";
checkBox1.Checked = false;
}
}
}
}
fs.Close();
}
{
UserInfo user = new UserInfo();
BUserInfo bUser = new BUserInfo();
BinaryFormatter bf = new BinaryFormatter();
{
user.UserPwd = textBox2.Text.Trim();
}
else
{
user.UserPwd = "";
}
{
users.Remove(user.UserName);
}
users.Add(user.UserName, user);
bf.Serialize(fs, users);
user.UserPwd= textBox2.Text;
if (i > 0)
{
Form2 f = new Form2();
f.Show();
this.Hide();
}
else
{
MessageBox.Show("登录失败!");
}
fs.Close();
}