在网上看了一段代码 没能全明白 求解高人~~~
以下是网上找的代码先定义user类:­using System;­using System.Collections.Generic;­using System.Text;­­[Serializable]­public class User­{­    private string loginID = string.Empty;­    public string LoginID­    {­        get { return loginID; }­        set { loginID = value; }­    }­    private string pwd = string.Empty;­    public string Pwd­    {­        get { return pwd; }­        set { pwd = value; }­    }­}­­(下面页面开始位置定义 到底要在哪定义啊希望高人能详细点说明)
页面开始位置定义:­Dictionary<string, User> users = new Dictionary<string, User>();­        User user = new User();­注:会员输入框用combox下拉框­在登录成功事件写:­
(这个是不是在密码验证成功后写在新窗体new之前 还有filestream我写不出来 是不是要引用哪个空间)

FileStream fs = new FileStream("data.bin", FileMode.Create);­                    BinaryFormatter bf = new BinaryFormatter();­                    user.LoginID = cbologinId.Text.Trim();­                    if (cbRember.Checked)­                    {­                        user.Pwd = txt_userPwd.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();­                users = bf.Deserialize(fs) as Dictionary<string, User>;­                foreach (User user in users.Values)­                {­                    cbologinId.Items.Add(user.LoginID);­                }­                for (int i = 0; i < users.Count; i++)­                {­                    if (cbologinId.Text.Trim() != "")­                    {­                        if (users.ContainsKey(cbologinId.Text.Trim()))­                        {­                            txt_userPwd.Text = users[cbologinId.Text].Pwd;­                            cbRember.Checked = true;­                        }­                    }­                }­            }­            fs.Close();­combox用户列表选择事件:­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 (cbologinId.Text.Trim() != "")­                    {­                        if (users.ContainsKey(cbologinId.Text.Trim()) && users[cbologinId.Text].Pwd != "")­                        {­                            txt_userPwd.Text = users[cbologinId.Text].Pwd;­                            cbRember.Checked = true;­                        }­                        else­                        {­                            txt_userPwd.Text = "";­                            cbRember.Checked = false;­                        }­                    }­                }­            }­            fs.Close();­
 希望能大致的流程略详细的讲一遍  谢谢诶

解决方案 »

  1.   

    就是向data.bin读写数据的过程,保存的信息存在data.bin文件里面
      

  2.   

    我帮你分析下这段代码,可能会有些问题,不完全对,只能说是给出个思路,具体怎么实现我没有去试过。
    1.user类里面存放了用户的用户名和密码的属性,通过对字段封装来实现用户名和密码的构造,并且把用户的信息写入序列化Serializable;
    2.Dictionary<string, User> users = new Dictionary<string, User>();­User user = new User();­这些应该是放在对use类进行操作的页面的,这里用了字典集合将用户信息进行操作,去查下Dictionary字典集合的使用方法;
    3.filestream引入的命名空间是using System.IO; 这个是对文件流进行操作的命名空间;FileStream fs = new FileStream("data.bin", FileMode.Create);­这里是将序列化的信息写入到data.bin文件中了。这里你需要去看下关于序列化方面的知识了。http://wenku.baidu.com/view/b1b470620b1c59eef8c7b49e.html
    下面的知识我也不是很熟悉了,请高手继续解答。
      

  3.   

    先存在一个文件里  txt  xml什么都行 
    下次启动的时候读进来  最好要加密
    比如说密码 123456
    MD5加密    SD45SGFETS45
    这样 别人就看不懂了   
      

  4.   

    加密写个文件或注册表中。
    http://topic.csdn.net/u/20110113/15/b4f9b05c-3a82-4651-ab8f-921e56792a67.html
      

  5.   

    我觉得是不是加密写到XML文件好些
      

  6.   


    [Serializable]­之上还有加一个加密解密层,最好用不对称的.
      

  7.   

    我现在问题解决了 但是我有在bin文件下  看到data。bin  但是在登录的时候就是没能读出来...也就是说我在登陆时有记住密码 但是退出后再登录就什么都没有了 何解???
      

  8.   


    没看代码没看回复   看标题来着以下几个步骤:1.配置文件里设定某个值是否保存了密码
    2.找个地方存放用户的密码,随便你用TXT还是用什么的!
    3.程序运行的时候检查配置文件,如果是读取你已经存放好的密码,如果非,输密码的地方就留空!
      

  9.   

    只要记住密码的 check 为true  就写进 cookie 里面去下次初始化 窗口就直接读取
      

  10.   

    贴代码了
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.Serialization.Formatters.Binary;
    using System.IO;
    namespace demo
    {
        public partial class Form1 : Form
        {
            Dictionary<string, User> users = new Dictionary<string, User>();
            User user = new User();
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                if (cbologinId.Text == "qq" && txtPassword.Text == "qq")
                {
                    
                    FileStream fs = new FileStream("data.bin", FileMode.Create);
                    BinaryFormatter bf = new BinaryFormatter();
                    User u = new User();
                    u.LoginID = cbologinId.Text.Trim();
                    if (CkbKeepPassword.Checked)
                    {
                        u.Pwd = txtPassword.Text.Trim();
                    }
                    else
                    {
                        u.Pwd = "";
                    }
                    if (users.ContainsKey(user.LoginID))
                    {
                        users.Remove(user.LoginID);
                    }
                    users.Add(user.LoginID, user);
                    bf.Serialize(fs, users);
                    fs.Close();
                    MainForm mf = new MainForm();
                    mf.Show();
                    this.Hide();
                }
            }        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, User>;
                    foreach (User user in users.Values)
                    {
                        cbologinId.Items.Add(user.LoginID);
                    }
                    for (int i = 0; i < users.Count; i++)
                    {
                        if (cbologinId.Text.Trim() != "")
                        {
                            if (users.ContainsKey(cbologinId.Text.Trim()))
                            {
                                txtPassword.Text = users[cbologinId.Text].Pwd;
                                CkbKeepPassword.Checked = true;
                            }
                        }
                    }
                }
                fs.Close();
            }        private void cbologinId_SelectedIndexChanged(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 (cbologinId.Text.Trim() != "")
                        {
                            if (users.ContainsKey(cbologinId.Text.Trim()) && users[cbologinId.Text].Pwd != "")
                            {
                                txtPassword.Text = users[cbologinId.Text].Pwd;
                                CkbKeepPassword.Checked = true;
                            }
                            else
                            {
                                txtPassword.Text = "";
                                CkbKeepPassword.Checked = false;
                            }
                        }
                    }
                }
                fs.Close();
            }        private void cbologinId_SelectionChangeCommitted(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 (cbologinId.Text.Trim() != "")
                        {
                            if (users.ContainsKey(cbologinId.Text.Trim()) && users[cbologinId.Text].Pwd != "")
                            {
                                txtPassword.Text = users[cbologinId.Text].Pwd;
                                CkbKeepPassword.Checked = true;
                            }
                            else
                            {
                                txtPassword.Text = "";
                                CkbKeepPassword.Checked = false;
                            }
                        }
                    }
                }
                fs.Close();
            }
        }
    }
      

  11.   

    这是User类 我单独写了using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace demo
    {
        [Serializable]
       public class User
        {
            private string loginID = string.Empty;
            public string LoginID
            {
                get { return loginID; }
                set { loginID = value; }
            }
            private string pwd = string.Empty;
            public string Pwd
            {
                get { return pwd; }
                set { pwd = value; }
            }
        }
    }
      

  12.   

    我运行没报错  但是登录时就什么都是空的  我查看了bin文件夹 下面有data.bin生成 就是没读取出来  何解啊
      

  13.   

    使用数据库、TXT、INI,任意一种文件都可以记录信息。在登陆窗体运行时检测,是否有信息保存。如果有就读取
      

  14.   

    可利用RegistryKey类(using Microsoft.Win32;),将信息保存在注册表中。
    RegistryKey rsg = null;
    if (null == Registry.CurrentUser.OpenSubKey("Software\\Mistone-xzh")) {
                        Registry.CurrentUser.CreateSubKey("Software\\Mistone-xzh");
                    }                if (null == Registry.CurrentUser.OpenSubKey("Software\\Mistone-xzh\\LoginInfo")) {
                        Registry.CurrentUser.CreateSubKey("Software\\Mistone-xzh\\LoginInfo");
                    }                rsg = Registry.CurrentUser.OpenSubKey("Software\\Mistone-xzh\\LoginInfo", true);
    rsg.SetValue("LoginName", "abc");
    rsg.SetValue("LoginPassword", "123");//最好将密码进行加密
    登录窗体Load时,从注册表中获取信息:
    RegistryKey rsg = Registry.CurrentUser.OpenSubKey("Software\\Mistone-xzh\\LoginInfo");
    string loginName = rsg.GetValue("LoginName").ToString();
    string pwd = rsg.GetValue("LoginPassword").ToString();
    大概思路就是这样。
      

  15.   


    仔细看看你的代码
    User u = new User();
                    u.LoginID = cbologinId.Text.Trim();
                    if (CkbKeepPassword.Checked)
                    {
                        u.Pwd = txtPassword.Text.Trim();
                    }
                    else
                    {
                        u.Pwd = "";
                    }
                    if (users.ContainsKey(user.LoginID))
                    {
                        users.Remove(user.LoginID);
                    }
                    users.Add(user.LoginID, user);你这地方又声明了一个新的User 对象 u,帐号密码都赋值给了u对象,而你存储的确实user对象,所以肯定不行呀
      

  16.   

    建议用xml文件比较方便,最近我也写了这么个东东。
      

  17.   


    我那不是把User 实例化了么?不然怎么调用Pwd  那些呢?
      

  18.   

     users.Add(user.LoginID, user);
    你这样存的是你的u对象吗?
      

  19.   

            Dictionary<string, User> users = new Dictionary<string, User>();
            User user = new User();你存的是全局的user对象,他没有被赋值
      

  20.   

    代码没有问题,我试过了        Dictionary<string, User> users = new Dictionary<string, User>();
            User user = new User();        private void button1_Click(object sender, EventArgs e)
            {
                if (cbologinId.Text == "qq" && txtPassword.Text == "qq")
                {                FileStream fs = new FileStream("data.bin", FileMode.Create);
                    BinaryFormatter bf = new BinaryFormatter();
                    //User u = new User();
                    user.LoginID = cbologinId.Text.Trim();
                    if (CkbKeepPassword.Checked)
                    {
                        user.Pwd = txtPassword.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();
                    MainForm mf = new MainForm();
                    mf.Show();
                    this.Hide();
                }
            }        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, User>;
                    foreach (User user in users.Values)
                    {
                        cbologinId.Items.Add(user.LoginID);
                    }
                    for (int i = 0; i < users.Count; i++)
                    {
                        if (cbologinId.Text.Trim() != "")
                        {
                            if (users.ContainsKey(cbologinId.Text.Trim()))
                            {
                                txtPassword.Text = users[cbologinId.Text].Pwd;
                                CkbKeepPassword.Checked = true;
                            }
                        }
                    }
                }
                fs.Close();
            }        private void cbologinId_SelectedIndexChanged(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 (cbologinId.Text.Trim() != "")
                        {
                            if (users.ContainsKey(cbologinId.Text.Trim()) && users[cbologinId.Text].Pwd != "")
                            {
                                txtPassword.Text = users[cbologinId.Text].Pwd;
                                CkbKeepPassword.Checked = true;
                            }
                            else
                            {
                                txtPassword.Text = "";
                                CkbKeepPassword.Checked = false;
                            }
                        }
                    }
                }
                fs.Close();
            }        private void cbologinId_SelectionChangeCommitted(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 (cbologinId.Text.Trim() != "")
                        {
                            if (users.ContainsKey(cbologinId.Text.Trim()) && users[cbologinId.Text].Pwd != "")
                            {
                                txtPassword.Text = users[cbologinId.Text].Pwd;
                                CkbKeepPassword.Checked = true;
                            }
                            else
                            {
                                txtPassword.Text = "";
                                CkbKeepPassword.Checked = false;
                            }
                        }
                    }
                }
                fs.Close();
            }
    这样再试试
      

  21.   

     我知道了 我发现我从开始就错了 我一登录 看combox里没东西 我就没去点旁边的小三角  原来他没有显示出来 要点才有  大意了  害我弄了那么久  悲剧..
      

  22.   

    <script>aler('Ok')</script>