如何实现C#程序3次用户名密码输入错误后自动关闭的功能
现有代码的核心问题
- 计数器
i定义在button1_Click方法内部,每次点击按钮都会被重新初始化为0,永远无法累计到3次错误 - 方法内部添加了无意义的
while循环,单次点击按钮就会在循环里空转,不符合「每次点击按钮算一次尝试」的交互逻辑 - 验证逻辑写错:当前用
&&判断,只有用户名和密码同时错误才会计数,只要其中一项正确就算验证通过,不符合常规登录校验逻辑 - 没有实现3次错误后的退出逻辑,也没有登录成功后终止计数的逻辑
修正后的实现方案
首先需要把计数器定义为窗体类的全局成员,避免每次点击被重置,再调整点击事件的校验逻辑:
// 以下代码写在窗体类内部、所有方法外部,作为类的全局成员 private int errorCount = 0; private const string ValidUsername = "User"; private const string ValidPassword = "Password";
修改按钮点击事件逻辑:
private void button1_Click(object sender, EventArgs e) { // 校验用户名密码是否正确 if (textBoxUsername.Text == ValidUsername && textBoxPassword.Text == ValidPassword) { MessageBox.Show("登录成功"); // 登录成功后重置计数器,也可以自行添加跳转页面等逻辑 errorCount = 0; return; } // 校验失败,错误次数+1 errorCount++; if (errorCount >= 3) { MessageBox.Show("3次输入均错误,程序即将退出"); // 关闭当前程序 Application.Exit(); return; } // 剩余尝试次数提示,可选清空输入框优化体验 MessageBox.Show($"用户名或密码错误,剩余尝试次数:{3 - errorCount}"); textBoxUsername.Clear(); textBoxPassword.Clear(); }
内容的提问来源于stack exchange,提问作者Poecyptes
相关产品推荐
相关产品推荐

