采集TextChanged事件,在用户写字符时判断,如果大了,就自动给他删除一个

解决方案 »

  1.   

    private void textBox1_TextChanged(object sender, System.EventArgs e)
    {
      if (Convert.ToInt32(textBox1.Text)>10)
        MessageBox.Show("jkjfkdj");
    }
      

  2.   

    这个办法看起来很好。但是关键是我的这个文本框的值还会参与别的计算,所以不愿意要事后才激发。而想在键盘事件的时候激发判断。
    private void tbxMoneyAmount_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
    try
    {
    Decimal doo = 0;
    if(this.tbxThisMoneyAmount.Text != "")
    {
    if((e.KeyValue >= (int)(char)'0' && e.KeyValue <= (int)(char)'9')|| e.KeyValue == (int)(char)'.')
    {
    char c = (char)e.KeyValue;
    string m = this.tbxMoneyAmount.Text;
    m += c;
    doo = System.Convert.ToDecimal(m)*System.Convert.ToDecimal(this.tbxExchangeRate.Text); if(doo > System.Convert.ToDecimal(PayableTotalMoney))
    e.Handled = true;
    else
    e.Handled = false;
    }
    else
    e.Handled = false;
    }
    }
    catch{}
    }这一段代码中我明明已经捕捉到e.Handled = true;可惜还是把那个字符加到了文本框中去了。
    百思不得其解呀。
      

  3.   

    有两种办法1 验证控件 直接在客户端验证
    2 if ((Int32.Parse(textBox1.text)>最小值)&&(Int32.Parse(textBox1.Text)<最大值))
      {
        范围以内
      }
      else
      {
        范围以外
      }
      

  4.   

    是WinForm,不知道有没有这个验证的东西。
      

  5.   

    同时你还得考虑限制用户的粘贴,参考
    http://blog.csdn.net/FlashElf/archive/2004/10/31/161024.aspx?Pending=true
      

  6.   

    用javascript解决,keypress事件。
      

  7.   

    override WinForm 的ProcessKeyPreview方法如下:
    protected override bool ProcessKeyPreview(ref Message m)
    { if(m.WParam.ToInt32() > 55)//大于5就不能加上
    {
    return true;
    }
    return base.ProcessKeyPreview (ref m);
    }