当前位置:编程学习 > C#/ASP.NET >>

WinFrom验证登录问题

用户登陆的时候有问题,如果密码错误登陆窗口就直接关闭了!数据库验证没有问题,感觉是逻辑出问题了!请大家帮我找找错误!
Program.cs文件内容如下:

FrmLogin login = new FrmLogin();
FrmMain frmmain;
if (login.CheckLogin())
{
   Application.Run(frmmain = new FrmMain());
   login.Close();
}

frmlogin.cs文件内容如下:

public bool CheckLogin()
        {
            this.ShowDialog();
            return m_bLogin;
        }
        private void cmdOk_Click(object sender, EventArgs e)
        {
            m_bLogin=UserAndPwd();
            if (m_bLogin) //如果登录成功,关闭登录窗口,打开主画面
            {
                this.Close();
            }
            else
            {
                MessageBox.Show("请检测用户名和密码是否正确!");
            }
        }
       public bool UserAndPwd()//验证用户名和密码
        {
            bool bRet = false;

            //查询语句
            string sql = "select count(*) from Users where UserAccount='" + userTxt.Text + "' and UserPwd='" + PassTxt.Text + "'";

            //验证用户返回是否成功
            bRet = SqlWork.validate(sql);
            //MessageBox.Show(bRet.ToString());

            //获取当前用户名
            UserName = userTxt.Text;

            //返回是否验证成功启动主界面
            return bRet;
        }
--------------------编程问答-------------------- 你这个  login.Close();
你这个页面都关闭了,他当然关闭啊....赶紧给分..别墨迹.. --------------------编程问答--------------------

//建议做法:Program.cs里就启动LoginForm就行,开启主窗体放到登陆窗体确定事件中做

//Program.cs
Application.Run(new FrmLogin();


//LoginForm.cs
private void cmdOk_Click(object sender, EventArgs e)
{
  m_bLogin=UserAndPwd();
  if (m_bLogin)    //如果登录成功,关闭登录窗口,打开主画面
   {
     FrmMain frmmain = new FrmMain();
     this.Close();
  }
 else
 {
    MessageBox.Show("请检测用户名和密码是否正确!");
 }
}

--------------------编程问答-------------------- 参考一下:
http://www.cnblogs.com/tgyun/archive/2008/12/22/1359573.html

  --------------------编程问答--------------------  public static bool LoginFlag = false;
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Login login = new Login();
            login.ShowDialog();
            if (LoginFlag == true)
            {
                Application.Run(new MainFrm());
            }
            else
            {
                Application.Exit();
            }
        }

LoginFrm中,Button中验证成功后:
  Program.LoginFlag = true;
                this.Close(); --------------------编程问答-------------------- FrmLogin login = new FrmLogin();
FrmMain frmmain;
if (login.CheckLogin())
{
   Application.Run(frmmain = new FrmMain());
   login.Close();
}

这儿的LOGIN.CLOSE()可以不要了 --------------------编程问答-------------------- login.Close();改成Login.hide();让Login隐藏,不要关闭! --------------------编程问答-------------------- login.close()当然窗口会关闭啦 --------------------编程问答-------------------- 感谢各位的回答,但是问题仍然没有解决!上面的方法都试了一遍还没解决!问题再重声一遍,用户验证的时候,如果用户信息正确,frmlogon窗口关闭,frmmain窗口正常打开!错误在,如果用户信息有误,程序验证提示错误后就立即退出了,而不是我希望的能继续验证用户信息!希望大家再提出方案!能解决问题的决不墨迹立即给分,不认真回答的就别想了! --------------------编程问答-------------------- 我想应该是逻辑的问题,你像我这种思路试试!

pricate bool bRet = false;

public bool CheckLogin()
        {
            this.ShowDialog();
            return m_bLogin;
        }
        private void cmdOk_Click(object sender, EventArgs e)
        {
            
            if (bRet==true)    //如果登录成功,关闭登录窗口,打开主画面
            {
                this.Close();
            }
            else
            {
                MessageBox.Show("请检测用户名和密码是否正确!");
            }
        }
       public bool UserAndPwd()//验证用户名和密码
        {
             bool bRet1=false;
            //查询语句
            string sql = "select count(*) from Users where UserAccount='" + userTxt.Text + "' and UserPwd='" + PassTxt.Text + "'";

            //验证用户返回是否成功
            bRet1 = SqlWork.validate(sql);
             if(bRet1==true)
              {
                 bRet=true;
                 
              }
              else
              {
                 bRet=false; 
              }
            //MessageBox.Show(bRet.ToString());

            //获取当前用户名
            UserName = userTxt.Text;

            //返回是否验证成功启动主界面
            return bRet;
        }
--------------------编程问答-------------------- 不一定是逻辑问题!楼上的兄弟,我感觉

           if(bRet1==true) 
              { 
                bRet=true; 
                
              } 
              else 
              { 
                bRet=false; 
              } 

这段没什么必要,直接返回bRet1就行了!
补充一点,我在建项目的时候,窗口的顺序是先frmmain再frmlogin!
我重新建了个工程,frm1是登录窗口,frm2是mian窗口,用自己的代码测试功能正常。
请问是不是有什么东西我没有配置好?
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,