日期:2014-05-18  浏览次数:20847 次

請問各位高手一個問題
向大家請教一個問題,就是,在登錄的時候輸入用戶名和密碼三次,如果三次均輸入不正確,將不能再次輸入,請問該如何去判斷輸入的次數為三次?!再此謝過了!

------解决方案--------------------
C# code
int times = 0;
bool result = false;
while (!result && times < 3)
{
    string username = xxx;
    string password = yyy;
    result = login(username, password);
    times++;
}

------解决方案--------------------
代碼被注釋了,還能夠執行?第一次聽說。
------解决方案--------------------
一般3次锁定,都是配合数据库实现的。加一列记录错误次数
------解决方案--------------------
探讨
//for (int i = 0; i >= 3; i++)
//{
// txtAdminName.Text = "";
// txtAdminName.Focus();
// txtAdminPwd.Text = "";
//}
MessageBox.Show("aaa");
}
}
這是我写的登陆代码,我不知道注释的那块儿为什么就是不执行!请指教,多谢!

------解决方案--------------------
判断用户登录三次,这种代码很多。我希望你去搜索。这个让别人给你写代码,原本有点容易“被鄙视”。但是我看了你写的代码,我理解了,你比大多数业余爱好者还没有基础。

编程程序,语言不重要,关键是知道机制。当你执行了mf.Show()之后,就失去捕获其登录事件。有关业务逻辑判断代码是处理那个mf的登录事件时执行的。当你执行了this.Visible = false;之后,还怎么可能再执行btnLogin_Click的部分呢?而这个for循环的业务逻辑概念,我实在是不知道说什么好。

看到你的代码,我混乱了。
------解决方案--------------------
就失去捕获其登录事件 --> 就是去捕获其登录事件

唉,原本不想再回复了,可惜写了错别字,不得不再回复一个帖子。给你写个可能的例子:
C# code
pivate int errCnt=0;

private void btnLogin_Click(object sender, EventArgs e)
  {
  AdminSys aSys=new AdminSys();
  string adminName = this.txtAdminName.Text.Trim();
  string adminPwd = this.txtAdminPwd.Text.Trim();
  aSys = AdminSysManager.QueryAdminSysByAdminNameAndAdminPwd(adminName,adminPwd);
  if (aSys != null && aSys.AdminName == adminName && aSys.AdminPwd == adminPwd)
  {
  MainForm mf = new MainForm();
  mf.Show();
  mf.Close += (sd,arg)=>{ this.Close(); };
  this.Visible = false;
  }
  else
  {
    errCnt++;
    if(errCnt>3)
        throw new Exception("超过3次登录错误!");
    else
        MessageBox.Show("用户名或者密码错误,请重新登录!");
  }
  }

------解决方案--------------------
winform的话用个变量来记录登陆次数,比如:

C# code

private int count = 0;

...
  else
  {
      if (count < 3)
      {
         txtAdminName.Text = "";
         txtAdminName.Focus();
         txtAdminPwd.Text = "";
         count++;
       }
       else
       {
         MessageBox.Show("aaa");
       }
  }