如何实现,让文本框只能输入数字,不能输入非数字字符呢?
--------------------------------
有些文本框是只允许录入金额的,如果用户录入了非数值,我还要进行异常处理。
所以想实现,用户无法录入非数字,如何实现呢?再说了,本来只能录入金额的地方,用户连 abc 都能录进去,程序也不规范呀!!!

解决方案 »

  1.   

    asp.net还是winform?asp.net可以使用RegularExpressionValidator.
      

  2.   

    C#下限制textBox1文本框只能输入数字:
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        int iKeyChar=e.KeyChar;
        //8是按下退格键,13是按下回车键
        if (iKeyChar == 8 || iKeyChar == 13)
        {
            e.Handled = false;
            return;
        }
        //限制只能输入0至9
        string s1="0123456789";
        iKeyChar = s1.IndexOf(e.KeyChar);
        if(iKeyChar==-1)
        {
            e.Handled = true;
        }
    }
      

  3.   

    我觉得这个可以用正则表达式啊:
    Regex regex = new Regex(@"^[0-9\s]+$");
    if (!regex.IsMatch(e.KeyChar.ToString()))
    {
        e.Handled = true;
    }
      

  4.   

    c# 只能输入数字的文本框 
    http://blog.csdn.net/wuyazhe/archive/2010/07/12/5729338.aspx
      

  5.   

    MaskedTextBox
    private bool nonNumberEntered = false;
      private void textBox1_KeyDown(object sender, KeyEventArgs e)
      {
      nonNumberEntered = false;
      if ((e.KeyCode < Keys.D0) || (e.KeyCode > Keys.D9 && e.KeyCode < Keys.NumPad0) || (e.KeyCode > Keys.NumPad9))
      {
      if (e.KeyCode != Keys.Back)   
      {
      nonNumberEntered = true;
      }
      }
      }  private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
      {
      if (nonNumberEntered)
      {
      e.Handled = true;  
      }
      }
    Char.IsNumber(e.KeyChar)
      

  6.   

    try
    {
      Double.parse( 你的输入);
    }
     catch
    {
    messagebox.show("数据格式非法");
    return;
    }
      

  7.   

    <asp:TextBox ID="txtpwd" runat="server" onkeyup= "value=value.replace(/[^\d]/g, '')" onbeforepaste= "clipboardData.setData( 'text ',clipboardData.getData( 'text ').replace(/[^\d]/g, '')) " TextMode="Password" Width="152px"></asp:TextBox>
      

  8.   

    上面都讲了,
    或者
    继承TextBox,重载ProcessKeyEventArgs
    protected override bool ProcessKeyEventArgs(ref Message m) 
          { 
            int s=m.Wparam.ToInt32(); 
            if(m.Msg==0x0102)       
            { 
              if((s <48)||(s> 57))//这里是需要屏蔽的字符(ASCII) 
                return true; 
            } 
            return base.ProcessKeyEventArgs (ref m); 
          } 
      

  9.   

    我的方法很简单,用NumericUpDown控件,然和设置它的Region,把右边那俩按钮挡住就完了。
      

  10.   

    要不就用KeyPress(object sender, KeyPressEventArgs e)事件限制用户只能输入数字,屏蔽键盘上其他按键,要不就用正则表达式去验证文本框的内容。
      

  11.   

    在textChange事件里判断
    try
    {
        convert.todouble(text);
    }
    catch
    {
    text = String.emety;
    }