c#遍历panel控件中的textbox,验证textbox输入的合法性…………

说明:一个panel控件中有很多textbox,每个textbox中只允许输入3个数字,当输入的数字达到3个后焦点自动切换到下一个textbox。问题:怎样遍历textb... 说明:
一个panel控件中有很多textbox ,每个textbox中只允许输入3个数字,当输入的数字达到3个后焦点自动切换到下一个textbox 。

问题:
怎样遍历textbox验证其输入的合法性,并在满足条件后切换焦点。或者有其它的什么好办法?
展开
 我来答
lovemingming
推荐于2016-05-31 · TA获得超过4137个赞
知道大有可为答主
回答量:1422
采纳率:0%
帮助的人:1427万
展开全部
1. 我的示例中有3个TextBox控件,他们的TabIndex属性分别是0,1,2
2. 我将3个TextBox的KeyPress事件都设为同一个,在我的示例中是textBox1_KeyPress
3. textBox1_KeyPress事件代码如下:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar >= '0' && e.KeyChar <= '9')//用于控制是否是数字
{
TextBox tb = (TextBox)sender; //事件中的sender指的就是触发这个事件的控件,所以可以用强制类型转换的方式,获得当前的TextBox控件。
if (tb.Text.Length == 2) //第3次输入的时候,textbox的内容已经有两个数字了。所以就是在这次输入完向下一个textbox跳。
{
int tbTabIndex = tb.TabIndex; //这里

是获得当前这个控件的TabIndex值是多少
foreach (Control c in panel1.Controls) //这里遍历Panel中的所有控件。
{
if (c.GetType() == typeof(TextBox)) //这里判断遍历出来的每一个控件是否是TextBox控件
{
if (c.TabIndex == tbTabIndex + 1) //如果是TextBox控件,就看看当前遍历到的这个控件的tabindex是否是当前出发事件的tabindex+1。这样就会按照0,1,2...n发展下去。
{
c.Focus(); //如果满足+1,那么就把焦点移到当前遍历的这个控件上去。
break; //然后跳出循环。
}
}
}
}
}
else
{
e.Handled = true; //如果不是数字取消输入的内容,效果就是,输入a,你会发现里没有任何内容显示。
}
}
小鸣5566
2012-11-17 · TA获得超过540个赞
知道小有建树答主
回答量:1061
采纳率:0%
帮助的人:899万
展开全部
好办法不知道,只会给每个textbox加textchanged事件。。。这样做少量的话还可以,大量的话。。。。。。效率应该很有问题。
当然这种做法可以逐个控件设置其属性,也可以用代码较为“优雅”的实现
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
草薙在
2012-11-17 · TA获得超过4795个赞
知道大有可为答主
回答量:6187
采纳率:50%
帮助的人:6296万
展开全部
建议你用maskedtextbox
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卷人2f
2012-11-17 · TA获得超过1352个赞
知道小有建树答主
回答量:1044
采纳率:50%
帮助的人:726万
展开全部
foreach(Controls ct in panel1)
{
if(ct is textBox)
{
textBox txt=(textBoxt)ct;
txt.keyPress+= //这里你自己按tab键快速生成出来,我没开工具
}
}
然后再keypress判断,

private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if(e.KeyChar!=8&&!Char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}

用这种吧,这个更快点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式