解决方案 »

  1.   

    你明明是两个独产的if语句。检查到if ... admin以后,再执行的下面的if else中的else
      

  2.   

    在中间的 if 前面分别加上 else
      

  3.   

    语法逻辑有问题三个if对应同一个else?不想写很多个if...else,可以加个bool变量,比如bool checkOk=true
    如果前面错误了,就将它设置为false之后的每个过程都判断checkOk。或者如果判断不通过就直接return。不过不建议这么做。return太多会导致逻辑混乱。
      

  4.   

    private void login_btn_Click(object sender, EventArgs e)
            {
                if(user.Text.Trim()== string.Empty  || psw.Text.Trim()== string.Empty)
                {
                    MessageBox.Show("请输入完整信息!");
                }

                if (user.Text.Trim() == "admin" && psw.Text.Trim() == "admin")//管理员测试账号
                {
                    Thread t = new Thread(new ThreadStart(delegate { Application.Run(new AdminForm()); }));
                    t.Start();
                    this.Dispose(true);
                     
                   // MessageBox.Show(this.ToString());
                }

                if (user.Text.Trim() == "Jake" && psw.Text.Trim() == "1991")//普通用户测试账号
                {
     
                    Thread t = new Thread(new ThreadStart(delegate { Application.Run(new ClientForm()); }));
                    t.Start();
                    this.Dispose(true);
     
                    // MessageBox.Show(this.ToString());
                }
                else
                {
                    sql = "select * from KHB where 卡号='" + user.Text + "'";
                    SqlConnection conn = new SqlConnection(connStr);//创建一个连接对象 conn
                    SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
                    DataSet ds = new DataSet();
                    sda.Fill(ds);
                    string val = ds.Tables[0].Rows[0]["密码"].ToString();
                    if (val == psw.Text.Trim())
                    {
                        MessageBox.Show("密码是正确的!");
                    }
                    else
                    {
                        MessageBox.Show("密码输入有误,请重新输入!");
                    }
                  //  MessageBox.Show(val);
                }
     
            }
    =========================
    我给你用颜色标注了下,能明白吗?每种颜色是一个块。
    你的这个先执行
    if(user.Text.Trim()== string.Empty  || psw.Text.Trim()== string.Empty)
                {
                    MessageBox.Show("请输入完整信息!");
                }然后执行
    if (user.Text.Trim() == "admin" && psw.Text.Trim() == "admin")//管理员测试账号
                {
                    Thread t = new Thread(new ThreadStart(delegate { Application.Run(new AdminForm()); }));
                    t.Start();
                    this.Dispose(true);
                     
                   // MessageBox.Show(this.ToString());
                }然后执行
    if (user.Text.Trim() == "Jake" && psw.Text.Trim() == "1991")//普通用户测试账号
                {
     
                    Thread t = new Thread(new ThreadStart(delegate { Application.Run(new ClientForm()); }));
                    t.Start();
                    this.Dispose(true);
     
                    // MessageBox.Show(this.ToString());
                }
                else
                {
    这个if是false,所以,执行else指令了要解决很简单,第一个if外的if全换成elseif就可以了,我觉得你的目的也是这个。
      

  5.   

    神级代码,对if else去google下吧,打好基础。你这个代码,我只能说,你赢了
      

  6.   

    sql = "select * from KHB where 卡号='" + user.Text + "'";
                    SqlConnection conn = new SqlConnection(connStr);//创建一个连接对象 conn
                    SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
                    DataSet ds = new DataSet();
                    sda.Fill(ds);
                    string val = ds.Tables[0].Rows[0]["密码"].ToString();
    说明这个sql语句的执行,没有查到你要的结果,应此Rows没有数据。当然报错。
      

  7.   

    执行完sql语句,要记得判断ds里是不是有数据,再执行下面的代码。
    难道用户随便输入个%%%%%%,系统里没有这个用户,你也让登录吗?