用户输入只能为-300~3500之间。(负号只能出现在第一个位置,可用判断当前输入的是否为负号并且当前文本的选择起点(SelectionStart)是否为0实现)。

解决方案 »

  1.   

    onchange事件中,Convert.ToInt32转text,判断范围
      

  2.   

    个人觉得这个还是在取值的时候一起判断比较好。
    用TryParse转换成数字,判断数字大小就可以了。如果你要没敲一个字符就判断的话,比较麻烦。还得考虑复制粘贴的情况,
    还有当前的text Selection的情况等
      

  3.   

    直接转换为int型比较,可以判断输入的字符串第一位是否为“-”或“0”
      

  4.   

    不是有个 maxValue 和 minValue 的服务端 验证控件吗 
      

  5.   

    maskedtextbox限制
    或 private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {        var text = ((TextBox)sender).Text.Substring(0, ((TextBox)sender).SelectionStart);
           }
    正则判断
      

  6.   


    private void textBox1_Validating(object sender, CancelEventArgs e) {
                try {
                    int v = Convert.ToInt32(textBox1.Text);
                    if (v > 100 || v < -100) {
                        MessageBox.Show("Error");
                        e.Cancel = true;        //禁止其他的任何操作 直到验证正确
                    }
                } catch (FormatException ex) {
                    MessageBox.Show(ex.Message);
                    e.Cancel = true;
                }
            }textbox 有 专门的严重的事件、、、、、
      

  7.   

    尼玛 打错字 
    textbox 有专门的验证的事件 Validating  和 Validated 
      

  8.   

    在补充一句 Validating 事件在控件失去焦点的时候触发  如果加了e.Cancel = true 那么焦点不会离开textbox 所以 如果在你判断失败的情况下 不希望用户继续下面的操作的话 在失败的情况下加上这句
    这样 焦点不会离开textbox控件 直到用户输入有效数据