ここで少し問題があります。これが私の状況です:
ユーザー名:tester(有効なユーザー名;すべてのチェックを回避)を入力してから、password:testerr(有効なパスワード;すべてのチェックを回避)を入力しています。問題は、同じ入力をチェックしていることです。そして、私のコードでは、両方の入力が同じである場合、通知が表示されます。ここで、ユーザー名とパスワードとしてtesterと入力するとエラーが発生しますが、パスワード'testerr'に文字を追加すると、パスワードは有効になりますが、ユーザー名は無効としてチェックされ、両方が同じであり、私の検証は不可能です。
どうすればこれを回避できますか?フィールド2からユーザー名フィールドを再確認することを考えていましたが、方法がわかりません。
bool passIsValid, userIsValid;
public AuthenticationWindow()
{
InitializeComponent();
// Creating TextChanged events which till validate input fields.
txtUserName.TextChanged += new EventHandler(txtUserName_TextChanged);
txtPassword.TextChanged += new EventHandler(txtPassword_TextChanged);
}
private void txtUserName_TextChanged(object sender, EventArgs e)
{
// Checking for empty user name field.
if (string.IsNullOrEmpty(txtUserName.Text))
{
lblMessageUser.Text = "User Name field cannot be empty!";
lblMessageUser.ForeColor = Color.IndianRed;
btnAuthenticate.Enabled = false;
userIsValid = false;
}
// Making sure that user name is at least 6 characters long.
else if (txtUserName.Text.Length < 6)
{
lblMessageUser.Text = "User Name field must be at least 6 characters long!";
lblMessageUser.ForeColor = Color.IndianRed;
btnAuthenticate.Enabled = false;
userIsValid = false;
}
// Checking for user name made of same repeating character.
// Invalid example: 'aaaaaa'
else if (!txtUserName.Text.Distinct().Skip(1).Any())
{
lblMessageUser.Text = "User Name cannot be made of repeating the same characters!";
lblMessageUser.ForeColor = Color.IndianRed;
btnAuthenticate.Enabled = false;
userIsValid = false;
}
// Making sure that password and user name aren't the same.
else if (txtUserName.Text == txtPassword.Text)
{
lblMessageUser.Text = "User Name and Password can not be the same!";
lblMessagePass.Text = "User Name and Password can not be the same!";
lblMessageUser.ForeColor = Color.IndianRed;
lblMessagePass.ForeColor = Color.IndianRed;
btnAuthenticate.Enabled = false;
userIsValid = false;
passIsValid = false;
}
// If all other checks aren't trigered; enable authentication.
else
{
lblMessageUser.Text = "User Name is valid.";
lblMessageUser.ForeColor = Color.Green;
userIsValid = true;
if (passIsValid && userIsValid)
{
btnAuthenticate.Enabled = true;
}
}
}
private void txtPassword_TextChanged(object sender, EventArgs e)
{
// Checking for Null or Empty string in password field.
if (string.IsNullOrEmpty(txtPassword.Text))
{
lblMessagePass.Text = "Password field cannot be empty!";
lblMessagePass.ForeColor = Color.IndianRed;
btnAuthenticate.Enabled = false;
passIsValid = false;
}
// Making sure that password is at least 6 characters long.
else if (txtPassword.Text.Length < 6)
{
lblMessagePass.Text = "Password field must be at least 6 characters long!";
lblMessagePass.ForeColor = Color.IndianRed;
btnAuthenticate.Enabled = false;
passIsValid = false;
}
// Checking for password made of same repeating character.
// Invalid example: 'aaaaaa'
else if (!txtPassword.Text.Distinct().Skip(1).Any())
{
lblMessagePass.Text = "Password cannot be made of repeating the same characters!";
lblMessagePass.ForeColor = Color.IndianRed;
btnAuthenticate.Enabled = false;
passIsValid = false;
}
// Making sure that user name and password are not the same.
// Security measure.
else if (txtUserName.Text == txtPassword.Text)
{
lblMessageUser.Text = "User Name and Password can not be the same!";
lblMessagePass.Text = "User Name and Password can not be the same!";
lblMessageUser.ForeColor = Color.IndianRed;
lblMessagePass.ForeColor = Color.IndianRed;
btnAuthenticate.Enabled = false;
userIsValid = false;
passIsValid = false;
}
// If all other checks aren't trigered; enable authentication.
else
{
lblMessagePass.Text = "Password is valid.";
lblMessagePass.ForeColor = Color.Green;
passIsValid = true;
if (passIsValid && userIsValid)
{
btnAuthenticate.Enabled = true;
}
}
}