none
textbox怎样让他只能输入有效数字? RRS feed

  • 问题

  • 怎么样让textbox里面只能输入数字?而且是取值范围之内的数字,比如0-100.我用TextChanged事件做的话:
     private void operationtime_TextChanged(object sender, EventArgs e)
            {
                int thisvalue = 0;
                try
                {
                    thisvalue = Convert.ToInt32(operationtime.Text.ToString().Trim());
                    if (thisvalue<0||thisvalue>120)
                    {
                        MessageBox.Show("练习时间必须在0-120之间.");
                    }
                }
                catch (System.Exception eex)
                {
                    MessageBox.Show("您输入的不是数字。请输入0-120之间的整数。");
                }

            }     
    只能提示用户要输入数字,但是他还是可以不输入,在提示完之后,他可以不理会,继续做其他操作。现在我想让用户如果输入的不对的话,他只有输入一个正确的数字才能继续操作。
    我发现许多注册采用的做法是,在保存或者提交的时候进行判断。输入不对就不提交。有没有更好的办法?
    勿以恶小而为之,勿以善小而不为
    2009年7月3日 1:29

答案

全部回复

  • 用Validating 事件

    输入不对就设e.Cancel=true;
    http://feiyun0112.cnblogs.com/
    • 已标记为答案 dut60 2009年7月4日 2:04
    2009年7月3日 1:36
    版主
  • 你好,使用正则表达式去验证比较合适。
    邹俊才
    2009年7月3日 1:39
    版主
  • 请给个例子。我没用过。
    勿以恶小而为之,勿以善小而不为
    2009年7月3日 3:11
  • 还可以这样,开始提交按钮 enable = false; 所有 textBox 都验证通过了,提交的按钮 enable = true; 
    知识改变命运,奋斗成就人生!
    2009年7月3日 3:13
    版主
  • 你好!
         如果经常要使用类似的功能,可以自己定义一个这样的控件!
         重写OnKeyPress方法,如果输入了非法的字符,直接把e.Handled=true;,这样非法字符不会显示出来了!
    周雪峰
    2009年7月3日 9:05
    版主
  • hi,
      在你上面的方法里添加一段代码做输入判断:
    1.你可以把textbox的text获得,然后toCharArray(),依次对字符判断,如果不是数字就做删除操作,把textbox的内容回滚到以前的值;
    2.你可以获取用户的键盘key的值,判断是数字键盘就是有效,否则就是无效。然后清空textbox,提示重新输入;
       你看看可行不可行~
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://frank_xl.cnblogs.com
    2009年7月3日 10:36
    版主
  •       // 放在KeyPress        
          private void OnlyNumeric(object sender, KeyPressEventArgs e) {
                if (e.KeyChar != 8 && !Char.IsDigit(e.KeyChar)) // 允许删除
                {
                        e.Handled = true;
                }
          }
    2009年7月4日 13:14