黑马程序员技术交流社区
标题:
登陆器的程序
[打印本页]
作者:
刘欢(安阳)
时间:
2012-9-28 10:50
标题:
登陆器的程序
在winform里有一个登陆练习,老师讲的代码是
//string useName = textBox1.Text;
//string passWard = textBox2.Text;
//if ((useName == "admin") && (passWard == "8888"))
//{ MessageBox.Show("登陆成功"); }
//else
//{
// MessageBox.Show("登陆失败!");
// times++;
// if (times > 3)
// { MessageBox.Show("登陆超过三次,退出登陆");
// this.Close();
// }
(times是全局变量,在外面定义,这里没粘)
然后我想用for循环来做, for (int i = 0; i < 3; i++)
{
string useName = textBox1.Text;
string passWard = textBox2.Text;
if ((useName == "admin") && (passWard == "8888"))
{ MessageBox.Show("登陆成功"); }
else
{
MessageBox.Show("登陆失败!");
}
}
MessageBox.Show("登陆超过三次,退出登陆");
this.Close();
但是每次循环都不会重新写入TextBox的值,应该怎么解决?
作者:
许庭洲
时间:
2012-9-28 11:11
本帖最后由 许庭洲 于 2012-9-28 11:15 编辑
//用if......else...... 语句解决
private void button1_Click(object sender, EventArgs e)
{
string username = txtUserName.Text.Trim();
string password = txtPassword.Text;
if(username.Equals("admin",StringComparison.OrdinalIgnoreCase&&password == "888888")
{
Message.Show("登陆成功!");
}
else
{
int i=0;
i++;
if(i>=3)
{
MessageBox.Show("登陆成功!");
}
esle
{
/*
int i=0;
i++;
if(i>=3)
{
MessageBox.Show("错误次数过多,程序即将退出!");
Application.Exit();
}*/
ErrorTimes++; //局部变量每次运行完毕变量的值都会被销毁,下次再运行,会重新初始化。而类字段,只要是一
//个对象,那么只要对象不销毁,就会一直保持对象的字段值。
if(ErrorTimes>=3)
{
MessageBox.Show("错误次数过多,程序即将退出!");
Application.Exit();
}
MessageBox.Show("登陆失败!");
}
}
}
作者:
许波
时间:
2012-9-28 11:42
private int EerroTime = 0;
string useName = textBox1.Text;
string passWard = textBox2.Text;
for (int i = 0; i < 3; i++)
{
if ((useName == "admin") && (passWard == "8888"))
{
MessageBox.Show("登陆成功");
break;
}
else
{
EerroTime++;
if (EerroTime < 3)
{
MessageBox.Show("登录失败");
break;
}
else
{
MessageBox.Show("登录次数过多");
break;
}
}
this.Close();
}
复制代码
关键是在方法外部定义EerroTime 变量的值,使其在随着for循环自增的情况下,而不每次都要初始化
作者:
王伟(wangwei)
时间:
2012-9-28 16:09
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 密码判断
{
public partial class Form1 : Form
{
int i;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
for (int k = i; k < 3; )
{
i++;
string useName = textBox1.Text;
string passWard = textBox2.Text;
if ((useName == "admin") && (passWard == "8888"))
{ MessageBox.Show("登陆成功"); }
else
{
MessageBox.Show("登陆失败!");
break;
}
}
if (i >=3)
{
MessageBox.Show("登陆超过三次,退出登陆");
this.Close();
}
}
}
}
复制代码
关键是要有个if判断和break跳出配合,就可以实现了。
希望对你有所帮助。
作者:
秦敖
时间:
2012-10-5 13:23
在Winform中用for循环去实现这个效果是没什么意义的。只要稍微分析一下程序执行流程就明白了。1.输入用户名和密码 2.点击登录按钮判断:如果正确提示成功,如果不正确给出相应错误处理:错误次数<=3次重新输入,>3次程序退出。重新输入这一操作要执行完button1_Click这一事件函数才能办到。而for循环是写在button1_Click这一函数里。也就是说,输入完毕点登录后因为for(int i=0;i<3;i++)的原因在内部会判断3次(但是在判断过程无法实现重新输入这操作,因为现在仍然在button1_Click内部执行)虽然可以用break改变循环判断次数,但这变得毫无意义。正常交互过程应该是:输入→点击登录判断→输入→点击登录判断.......
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2