限制TextBox输入的一些经验

作者在 2008-04-11 17:57:52 发布以下内容
天气: 热
心情: 高兴

我以前看了很多有关限制TextBox输入的例子,网上多的是各种各样的方法。

我在这里就随便说一下我觉得好用的办法。

我觉得用TextBox 的 KeyPress事件方法很实际,因为直接限制了键盘的输入(而且没必要弹出提示框,提示框我觉得很烦人)。

这里我以限制只能输入数字举个列子(我网上看到的加上我总结出来的方法)

我网上看到的正规表达式;

  private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
  {
            if (e.KeyChar >= '0' && e.KeyChar <= '9' )
       {
                e.Handled = false;
       }
            else
       {
                e.Handled = true;
       }
  }

这段表达式网上随处可以找到,虽让可以限制TextBox只能输入数字。

但是出了一个问题:如果输入错误了这么办法?因为已经限制了键盘只能输入0-9这个几个数字,也就是说连Back也限制了。

解决思路1:在if里面加上Back不被限制的条件。

 首先说下\b 如果在 [] 字符类中就表示Back。  转义字符 \b 是一个特例。

那么就可以这样写;

    private void TextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar >= '0' && e.KeyChar <= '9'|| e.KeyChar=='\b')
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

解决思路2: 当键盘输入数字和Back之外的任何东西 e.Handled 就等于 true

这种思路从理论的角度是行动通的。但是我不会去用这种方法,原因很简单:这种方法不但要排除'a'-'z'  'A'-'Z'  还要排除键盘上众多的符号,太麻对了虽然我想到这种方法但是我不会用。

这个表达式举一反三(稍微修改)就可以限制经常限制的输入。

C#.程序日志 | 阅读 4547 次
文章评论,共1条
FlyBee(作者)
2008-04-25 23:26
1
<div class="xspace-quote">原帖由BCCN 网友于2008-04-21 10:05:13发表
如果是ComboBox,我防止别人对ComboBox的选项做修改,我想禁用键盘里的所有键,该怎么办?.</div>
这个简单啊·····
comboBox 的 KeyPress时间下禁止键盘的输入就OK了  例如:
 
private void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }
游客请输入验证码
浏览43120次