Аутентификация пользователя с 3 попытками на winforms c#
у меня задача сделать аутентификацию пользователя с 3 попытками и если пользователь введёт неправильно 3 раза свой логин и пароль то на 4 раз написать что ваша карточка заблокирована, с помощью цикла while. Я попытался это сделать но он не изменяет текст на нужный, я попытался добавить после цикла while if(i == 4) { ваша карточка заблокирована } но когда я запускаю форму и ввожу неправильно он пропускает все попытки и сразу выводит ваша карточка заблокирована. Вот мой код:
namespace WinFormsApp3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnBut_Click(object sender, EventArgs e)
{
string log = txtLog.Text;
string pas = txtPas.Text;
int i = 1;
while (i <= 3)
{
if (log == "Dimas" && pas == "12345")
{
lblRes.ForeColor = Color.Green;
lblRes.Text = "Допуск разрешён";
}
else
{
lblRes.ForeColor = Color.Red;
lblRes.Text = "Допуск запрещён";
}
i++;
}
if (i == 4)
{
lblRes.Text = "Карточка заблокирована";
}
}
}
}
Ответы (1 шт):
Подумайте - в какой момент меняются log и pas? Они же не меняются внутри цикла while, так какой в этом цикле вообще смысл? Каждый раз при смене этих полей пользователь нажимает кнопку и происходит отдельный заход в метод btnBut_Click, нужно исходить из этой логики. Соответственно, описание и инициализация поля i должны быть снаружи метода btnBut_Click. Собственно, этого будет уже практически достаточно (по-хорошему нужно ещё порядок проверок поменять для красоты), поэтому код не привожу.