我的登录系统存在问题。
输入有效的用户名和密码后,我可以转到下一个表单。
当我输入错误的用户名和正确的密码时,我仍然可以转到下一个表单。
正确的用户名和错误的密码我仍然可以转到下一个表单。
如果我的用户名或密码错误,没有让下一步的正确代码是什么?
这是我的代码。
private void btnEnter_Click(object sender, EventArgs e)
{
if (tbUsername.Text == "username")
{
AdminMainMenu x = new AdminMainMenu();
x.Show();
t.Play();
this.Dispose();
}
else
{
SystemSounds.Hand.Play();
MessageBox.Show("Invalid Username! ", "Error");
}
if (tbPassword.Text == "password")
{
AdminMainMenu x = new AdminMainMenu();
x.Show();
t.Play();
this.Dispose();
}
else
{
SystemSounds.Hand.Play();
MessageBox.Show("Invalid Password! ", "Error");
}
}
答案 0 :(得分:2)
我只能猜测你在问什么,但是如果你想在显示表单之前用户名和密码都是正确的,请改用
if (tbUsername.Text == "username")
{
if(tbPassword.Text == "password")
{
AdminMainMenu x = new AdminMainMenu();
x.Show();
t.Play();
this.Dispose();
}
else
{
MessageBox.Show("Wrong password", "Error");
}
}
else
{
if(tbPassword.Text == "password")
{
MessageBox.Show("Wrong username", "Error");
}
else
{
MessageBox.Show("Wrong username and password", "Error");
}
}
答案 1 :(得分:0)
您可以将密码检查if
块嵌套在成功的用户名if
块中:
private void btnEnter_Click(object sender, EventArgs e)
{
if (tbUsername.Text == "username")
{
if (tbPassword.Text == "password")
{
AdminMainMenu x = new AdminMainMenu();
x.Show();
t.Play();
this.Dispose();
}
else
{
SystemSounds.Hand.Play();
MessageBox.Show("Invalid Password! ", "Error");
}
}
else
{
SystemSounds.Hand.Play();
MessageBox.Show("Invalid Username! ", "Error");
}
}
当用户名错误时,用户名检查的else
块正在执行,然后代码继续进行密码检查。您需要确保仅在检查用户名和密码后才显示表单。
或者,如果用户名或密码不正确,您可以单独检查点击事件和return
:
private void btnEnter_Click(object sender, EventArgs e)
{
if (tbUsername.Text != "username")
{
SystemSounds.Hand.Play();
MessageBox.Show("Invalid Username! ", "Error");
return;
}
if (tbPassword.Text != "password")
{
SystemSounds.Hand.Play();
MessageBox.Show("Invalid Password! ", "Error");
return;
}
//If we got here in code execution, then both username and password are correct
AdminMainMenu x = new AdminMainMenu();
x.Show();
t.Play();
this.Dispose();
}