办法很多
可以用正则表达式
或者直接
try
{
    int num = convert.int32(text);
}
catch
{}

解决方案 »

  1.   

    写到keypress事件下判断一下不就可以了。
    判断keycode是不是在48和112之外(可能是这个之外。你可以查MSDN)
      

  2.   

    有这样的商业控件,免费的也有,反正微软没有提供。如果不想用控件,自己可以在TextBox_Onkeypress事件中,如果输入的key不是数字对应的key,取消事件。
      

  3.   

    /// <summary>
    /// 验证数字
    /// </summary>
    /// <param name="number">输入字符串number</param>
    /// <returns>返回是否是数字</returns>
    public bool IsNumber(string number)
    {
    return Regex.IsMatch(number, @"^[+|-]?(\d+(\.\d*)?|\d{1,2}(,\d{3})*(\.\d*)?)$"); 
    }
      

  4.   

    可以用数据验证器Validator,你可以去查查资料,因为Validator有很多种,你看哪种适合你!!绝对能解决你的问题哈
      

  5.   

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
            e.Handled = IsNumber(e.KeyChar)
    End Sub
    Private Function IsNumber(ByVal N As Char) As Boolean
    Return System.Text.RegularExpressions.Regex.IsMatch(N, "^[+|-]?(\d+(\.\d*)?|\d{1,2}(,\d{3})*(\.\d*)?)$")
    End Function
    给你VB版的例子,不过C#和他一样的,呵呵盗用了 520NET(随风)的正则
      

  6.   

    赞成 xiaohutushen(xiaohutushen) 的做法
      

  7.   

    OK谢谢各位兄弟的help.
    我采用的方法如下:
                         if(e.KeyChar>48&&e.KeyChar<57)
    {
    str_bool=true;
    }
    else
    {
    str_bool=false;
    }
    str_bool是我定义的bool类型的变量,
    谢谢