指点一下
我用一个listbox和一个textbox组合实现边输入便提示的效果我想问问我在textbox里的写代码合理吗,思路对吗
请指点一下
private void textBox1_TextChanged(object sender, EventArgs e)
{
//首先,获取textBox1的内容
string str = textBox1.Text.Trim().ToString();
//判断输入的内容(目的要排除在第一位输入空格的情况)
if (textBox1.Text.Trim ().ToString () == "")
{
//如果一直输入空格将什么反应也没有(也可给出提示)
listBox1.Visible = false;
label.Visible = false;
button5.Enabled = false;
}
//排除第一位为空格后,就要开始判断输入的字符是不是0-9这十个数字之内的
else
{
//这个正则表达式判断的是:任意的一个1位到8位的字符串,是不是数字型的字符串,也就是说是不是由0-9组成的
string ss = @"^\d{1,8}$";
Regex reg = new Regex(ss);
//进行判断
if (reg.IsMatch(str))
{
//判断成功后,还要判断输入的位数。学号是8位的
//当字符长度少于8位
if (textBox1.Text != "" && textBox1.Text.Length < 8)
{
//这里用的是like的查询方法,也就是虚查询 。例如,查询所有学生中,姓王的学生,肯定会查出来好多人。就是这个意思
jC8 jc8 = new jC8();
ArrayList list = jc8.xuehaoList(str);
listBox1.Items.Clear();
listBox1.Visible = true;
for (int i = 0; i < list.Count; i++)
{
listBox1.Items.Add(list[i].ToString());
}
label.Visible = false;
button5.Enabled =false ;
}
//当字符位数等于8位时,就不再用虚查询了,用那种一般就行了。(虚查询在这里用不了,因为已经到达8位)
if (textBox1.Text.Length == 8)
{
jC8_2_ jc8_2 = new jC8_2_();
if (jc8_2.xuehao(str).Trim() != "")
{
listBox1.Items.Clear();
listBox1.Visible = true;
listBox1.Items.Add(jc8_2.xuehao(str).Trim());
label.Visible = false;
label.Text = "输入正确,学号存在。";
label.ForeColor = Color.Green ;
label.Visible = true;
//在输入学号存在时,把这个学号存下来。这部很重要,后面的添加、修改、删除全都要它
vip = str;
//这个timer1 是为了在8位学号输入正确时,能在1秒后让listBox1隐藏。
//我认为这一秒要有,算是给用户一个提示,提示用户,您输的学号在这里(是它)。人性吧 O(∩_∩)O哈哈~
timer1.Start();
//激活button5,就是那个确定按钮
button5 .Enabled =true ;
}
else
{
label.Visible = true ;
label.ForeColor = Color.Firebrick;
label.Text = "输入的学号不存在!";
listBox1.Visible = false;
button5.Enabled = false;
}
}
}
else
{
listBox1.Visible = false;
label.Visible = true;
label .Text = "输入的字符不合法!\n不是0-9这十个数字之中。";
label.ForeColor = Color.Firebrick;
button5.Enabled = false ;
}
}
}