当勾选自动登录的复选框,
下次登录加载登录窗体时自动显示账号和密码,
不用点击登录按钮自动运行显示主窗体

解决方案 »

  1.   

    用App.config存储你的用户名和密码(最好加密)。同时app.config里存储是否自动登陆的标志。
    如果用户设置为自动登陆下次只需打开窗体,就与数据库进行连接,并进行页面跳转。
      

  2.   

    用户名和密码已经用过App.config,可以自动显示
    我想实现的功能是不按登录按钮能自动登录~
      

  3.   

    App.config中就多存储一个字段,比如说AutoLogin=true,检查完这个字段后就自动在Form的复选框上打勾并完成自动登录。
      

  4.   

    已经填好了那在Form_Load里调用按钮click事件不就完了?
      

  5.   

    Form_Load(object sende....)
    {
    if(自动登录标志)
    {
    btnLogin_Click(sender,e);//登录按钮点击事件
    }
    }
      

  6.   


    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Xml;
    using System.IO;namespace IM
    {
        public class SystemConfig
        {
            #region"基本操作函数"
            /// <summary>
            /// 得到程序工作目录
            /// </summary>
            /// <returns></returns>
            private static string GetWorkDirectory()
            {
                try
                {
                    return Path.GetDirectoryName(typeof(SystemConfig).Assembly.Location);
                }
                catch
                {
                    return System.Windows.Forms.Application.StartupPath;
                }
            }
            /// <summary>
            /// 判断字符串是否为空串
            /// </summary>
            /// <param name="szString">目标字符串</param>
            /// <returns>true:为空串;false:非空串</returns>
            private static bool IsEmptyString(string szString)
            {
                if (szString == null)
                    return true;
                if (szString.Trim() == string.Empty)
                    return true;
                return false;
            }
            /// <summary>
            /// 创建一个制定根节点名的XML文件
            /// </summary>
            /// <param name="szFileName">XML文件</param>
            /// <param name="szRootName">根节点名</param>
            /// <returns>bool</returns>
            private static bool CreateXmlFile(string szFileName, string szRootName)
            {
                if (szFileName == null || szFileName.Trim() == "")
                    return false;
                if (szRootName == null || szRootName.Trim() == "")
                    return false;            XmlDocument clsXmlDoc = new XmlDocument();
                clsXmlDoc.AppendChild(clsXmlDoc.CreateXmlDeclaration("1.0", "GBK", null));
                clsXmlDoc.AppendChild(clsXmlDoc.CreateNode(XmlNodeType.Element, szRootName, ""));
                try
                {
                    clsXmlDoc.Save(szFileName);
                    return true;
                }
                catch
                {
                    return false;
                }
            }        /// <summary>
            /// 从XML文件获取对应的XML文档对象
            /// </summary>
            /// <param name="szXmlFile">XML文件</param>
            /// <returns>XML文档对象</returns>
            private static XmlDocument GetXmlDocument(string szXmlFile)
            {
                if (IsEmptyString(szXmlFile))
                    return null;
                if (!File.Exists(szXmlFile))
                    return null;
                XmlDocument clsXmlDoc = new XmlDocument();
                try
                {
                    clsXmlDoc.Load(szXmlFile);
                }
                catch
                {
                    return null;
                }
                return clsXmlDoc;
            }        /// <summary>
            /// 将XML文档对象保存为XML文件
            /// </summary>
            /// <param name="clsXmlDoc">XML文档对象</param>
            /// <param name="szXmlFile">XML文件</param>
            /// <returns>bool:保存结果</returns>
            private static bool SaveXmlDocument(XmlDocument clsXmlDoc, string szXmlFile)
            {
                if (clsXmlDoc == null)
                    return false;
                if (IsEmptyString(szXmlFile))
                    return false;
                try
                {
                    if (File.Exists(szXmlFile))
                        File.Delete(szXmlFile);
                }
                catch
                {
                    return false;
                }
                try
                {
                    clsXmlDoc.Save(szXmlFile);
                }
                catch
                {
                    return false;
                }
                return true;
            }        /// <summary>
            /// 获取XPath指向的单一XML节点
            /// </summary>
            /// <param name="clsRootNode">XPath所在的根节点</param>
            /// <param name="szXPath">XPath表达式</param>
            /// <returns>XmlNode</returns>
            private static XmlNode SelectXmlNode(XmlNode clsRootNode, string szXPath)
            {
                if (clsRootNode == null || IsEmptyString(szXPath))
                    return null;
                try
                {
                    return clsRootNode.SelectSingleNode(szXPath);
                }
                catch
                {
                    return null;
                }
            }        /// <summary>
            /// 获取XPath指向的XML节点集
            /// </summary>
            /// <param name="clsRootNode">XPath所在的根节点</param>
            /// <param name="szXPath">XPath表达式</param>
            /// <returns>XmlNodeList</returns>
            private static XmlNodeList SelectXmlNodes(XmlNode clsRootNode, string szXPath)
            {
                if (clsRootNode == null || IsEmptyString(szXPath))
                    return null;
                try
                {
                    return clsRootNode.SelectNodes(szXPath);
                }
                catch
                {
                    return null;
                }
            }        /// <summary>
            /// 创建一个XmlNode并添加到文档
            /// </summary>
            /// <param name="clsParentNode">父节点</param>
            /// <param name="szNodeName">结点名称</param>
            /// <returns>XmlNode</returns>
            private static XmlNode CreateXmlNode(XmlNode clsParentNode, string szNodeName)
            {
                try
                {
                    XmlDocument clsXmlDoc = null;
                    if (clsParentNode.GetType() != typeof(XmlDocument))
                        clsXmlDoc = clsParentNode.OwnerDocument;
                    else
                        clsXmlDoc = clsParentNode as XmlDocument;
                    XmlNode clsXmlNode = clsXmlDoc.CreateNode(XmlNodeType.Element, szNodeName, string.Empty);
                    if (clsParentNode.GetType() == typeof(XmlDocument))
                    {
                        clsXmlDoc.LastChild.AppendChild(clsXmlNode);
                    }
                    else
                    {
                        clsParentNode.AppendChild(clsXmlNode);
                    }
                    return clsXmlNode;
                }
                catch
                {
                    return null;
                }
            }        /// <summary>
            /// 设置指定节点中指定属性的值
            /// </summary>
            /// <param name="parentNode">XML节点</param>
            /// <param name="szAttrName">属性名</param>
            /// <param name="szAttrValue">属性值</param>
            /// <returns>bool</returns>
            private static bool SetXmlAttr(XmlNode clsXmlNode, string szAttrName, string szAttrValue)
            {
                if (clsXmlNode == null)
                    return false;
                if (IsEmptyString(szAttrName))
                    return false;
                if (IsEmptyString(szAttrValue))
                    szAttrValue = string.Empty;
                XmlAttribute clsAttrNode = clsXmlNode.Attributes.GetNamedItem(szAttrName) as XmlAttribute;
                if (clsAttrNode == null)
                {
                    XmlDocument clsXmlDoc = clsXmlNode.OwnerDocument;
                    if (clsXmlDoc == null)
                        return false;
                    clsAttrNode = clsXmlDoc.CreateAttribute(szAttrName);
                    clsXmlNode.Attributes.Append(clsAttrNode);
                }
                clsAttrNode.Value = szAttrValue;
                return true;
            }
            #endregion
      

  7.   


     #region"配置文件的读取和写入"
            private static string CONFIG_FILE = "SystemConfig.xml";
            /// <summary>
            ///  读取指定的配置文件中指定Key的值
            /// </summary>
            /// <param name="szKeyName">读取的Key名称</param>
            /// <param name="szDefaultValue">指定的Key不存在时,返回的值</param>
            /// <returns>Key值</returns>
            public static int GetConfigData(string szKeyName, int nDefaultValue)
            {
                string szValue = GetConfigData(szKeyName, nDefaultValue.ToString());
                try
                {
                    return int.Parse(szValue);
                }
                catch
                {
                    return nDefaultValue;
                }
            }        /// <summary>
            ///  读取指定的配置文件中指定Key的值
            /// </summary>
            /// <param name="szKeyName">读取的Key名称</param>
            /// <param name="szDefaultValue">指定的Key不存在时,返回的值</param>
            /// <returns>Key值</returns>
            public static float GetConfigData(string szKeyName, float fDefaultValue)
            {
                string szValue = GetConfigData(szKeyName, fDefaultValue.ToString());
                try
                {
                    return float.Parse(szValue);
                }
                catch
                {
                    return fDefaultValue;
                }
            }        /// <summary>
            ///  读取指定的配置文件中指定Key的值
            /// </summary>
            /// <param name="szKeyName">读取的Key名称</param>
            /// <param name="szDefaultValue">指定的Key不存在时,返回的值</param>
            /// <returns>Key值</returns>
            public static bool GetConfigData(string szKeyName, bool bDefaultValue)
            {
                string szValue = GetConfigData(szKeyName, bDefaultValue.ToString());
                try
                {
                    return bool.Parse(szValue);
                }
                catch
                {
                    return bDefaultValue;
                }
            }        /// <summary>
            ///  读取指定的配置文件中指定Key的值
            /// </summary>
            /// <param name="szKeyName">读取的Key名称</param>
            /// <param name="szDefaultValue">指定的Key不存在时,返回的值</param>
            /// <returns>Key值</returns>
            public static string GetConfigData(string szKeyName, string szDefaultValue)
            {
                string szConfigFile = string.Format("{0}\\{1}", GetWorkDirectory(), CONFIG_FILE);
                if (!File.Exists(szConfigFile))
                {
                    return szDefaultValue;
                }            XmlDocument clsXmlDoc = GetXmlDocument(szConfigFile);
                if (clsXmlDoc == null)
                    return szDefaultValue;            string szXPath = string.Format(".//key[@name='{0}']", szKeyName);
                XmlNode clsXmlNode = SelectXmlNode(clsXmlDoc, szXPath);
                if (clsXmlNode == null)
                {
                    return szDefaultValue;
                }            XmlNode clsValueAttr = clsXmlNode.Attributes.GetNamedItem("value");
                if (clsValueAttr == null)
                    return szDefaultValue;
                return clsValueAttr.Value;
            }        /// <summary>
            ///  保存指定Key的值到指定的配置文件中
            /// </summary>
            /// <param name="szKeyName">要被修改值的Key名称</param>
            /// <param name="szValue">新修改的值</param>
            public static bool WriteConfigData(string szKeyName, string szValue)
            {
                string szConfigFile = string.Format("{0}\\{1}", GetWorkDirectory(), CONFIG_FILE);
                if (!File.Exists(szConfigFile))
                {
                    if (!CreateXmlFile(szConfigFile, "SystemConfig"))
                        return false;
                }
                XmlDocument clsXmlDoc = GetXmlDocument(szConfigFile);            string szXPath = string.Format(".//key[@name='{0}']", szKeyName);
                XmlNode clsXmlNode = SelectXmlNode(clsXmlDoc, szXPath);
                if (clsXmlNode == null)
                {
                    clsXmlNode = CreateXmlNode(clsXmlDoc, "key");
                }
                if (!SetXmlAttr(clsXmlNode, "name", szKeyName))
                    return false;
                if (!SetXmlAttr(clsXmlNode, "value", szValue))
                    return false;
                //
                return SaveXmlDocument(clsXmlDoc, szConfigFile);
            }
            #endregion
        }
    }
    这是我的类文件,请问哪里要作出修改???
      

  8.   

    APPCONFIG
    XML
    注册表都可以写注册表的好处是程序被拷贝到别的机器,不能自动登录
      

  9.   

    登陆页面加checkbox1登陆页面载入时判断更改checkbox1的值。在checkBox1_CheckedChanged事件里判断是否选中,如果选中(把你登陆按钮的代码写成方法在此调用)执行登陆代码。否则什么也不做。不知道这样写,算不算已经给你代码了
      

  10.   

    注意:在checkbox1_CheckedChanged事件里,先屏蔽你登陆窗体上按钮。
      

  11.   


    private void login_Load(object sender, EventArgs e)
            {
                //从App.config提取用户名,密码。
                  //提取登陆标志进行判断。如真,更改checkbox1的值
            }
    private void checkBox1_CheckedChanged(object sender, EventArgs e)
            {
                if (this.checkBox1.Checked)
                {
                      //屏蔽所有按钮
                      //执行登陆
                         //登陆失败后启用所有按钮,更改checkbox1的值为false
                }
            }
      

  12.   

    你可以弄个Cookie吗...写到指定盘的文本文档中也行.到时候读取...
      

  13.   


     private void LoginForm_Load(object sender, EventArgs e)
            {
                chkSavePwd.Checked = true;
                
                //读取
                this.txtID.Text = SystemConfig.GetConfigData("UserID", string.Empty);
                this.txtPwd.Text = SystemConfig.GetConfigData("Password", string.Empty);
                chkAutoLogin.Checked = true;
                this.Hide();
            }        private void chkAutoLogin_CheckedChanged(object sender, EventArgs e)
            {
                if (chkAutoLogin.Checked)
                {
                    GetLogin();
                    this.Hide();
                }
            }
    //单击“登录”按钮时,设置登录名和登录密码
            private void btnLogin_Click(object sender, EventArgs e)
            {
                GetLogin();
            }        private void GetLogin()
            {
                //如果验证通过,显示主窗体,并将登录窗体设为不可见
                if (ValidateInput())
                {
                    isValidUser = ValidateUser(int.Parse(txtID.Text), txtPwd.Text, ref message);                if (isValidUser) //用户验证成功
                    {
                        //将输入的登录名保存到静态变量中
                        UserHelper.ID = int.Parse(txtID.Text);
                        //将输入的登录密码保存到静态变量中
                        UserHelper.LoginPwd = txtPwd.Text;
                        //显示主窗体
                        MainForm mf = new MainForm();
                        mf.Show();                    this.Visible = false;  //将登录窗体隐藏   
                    }
                    else   //用户验证失败
                    {
                        MessageBox.Show(message, "登录失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }            if (chkSavePwd.Checked)
                {
                    //保存
                    SystemConfig.WriteConfigData("UserID", this.txtID.Text.Trim());
                    SystemConfig.WriteConfigData("Password", this.txtPwd.Text.Trim());
                }
            }
      

  14.   

        UserHelper.ID = int.Parse(txtID.Text);
                        //将输入的登录密码保存到静态变量中
                        UserHelper.LoginPwd = txtPwd.Text;
                        //显示主窗体
    this.Visible = false;
                        MainForm mf = new MainForm();
                        mf.Show();                    
      

  15.   

    在LOAD判断,如果选了自动登录,就直接在程序里点击登录按钮就OK了
      

  16.   

    App.config 好像在VS 2008中 用得少了