使用 RegEx ,ASP.NET 中可用 RegularExpressionValidator 

解决方案 »

  1.   

    什么样的非法字符啊?~?~取ASC码好了~~
      

  2.   

    就是只能输入指定的字符,比如:只能输入数字。
    主要有两个问题:
    1、怎样取到一个字符的ASC码
    2、输入非法字符时,文本框没有反应,就是输不进去。主要原因 .NET 的帮助真是不好用,还没有原来的 MSDN 好用
      

  3.   

    Right!如果只是数字,使用数值转换,使用try, catch捕捉错误!
    要是还有其他字符,使用switch一一排除。当然要是只有数字,也可以不使用Text控件,使用NumericUpAndDown什么的!!
      

  4.   

    很多方法:一》比如ASP.NET提供的六个服务器端的验证控件;
              二》还有就是用JAVASCRIPT写验证函数在客户端验证(网上很多这样的例子)
           其中第二种方法比第一种方法的性能好,因为它在浏览器端进行,不用消耗服务器端的资源
      

  5.   

    取键盘值是不行的,因为还有右击txtBox 控件然后粘贴一堆东西,这用取键盘值行吗?呵呵
    试试// 用正则换掉非英文和数字,等同于 [^a-zA-Z_0-9]
    textBox1.Text  = System.Text.RegularExpressions.Regex.Replace(textBox1.Text,@"\W","")if (textBox1.Text == ""){
     MessageBox.Show("Empty Text");
    }如果想要规定的字符可以试试用unicode 码替换//只允许 a-h
    textBox1.Text  = System.Text.RegularExpressions.Regex.Replace(textBox1.Text,@"^[\u0061-\u0068]","")这样就可以做到匹配包括部分中文字在内的条件
      

  6.   

    更正://只允许 a-h
    textBox1.Text  = System.Text.RegularExpressions.Regex.Replace(textBox1.Text,@"[^\u0061-\u0068]","")
      

  7.   

    继承TextBox类,并重写WndProc方法,在方法中处理WM_CHAR消息下面是只能输入数字和小数点的textBox类public class textBox:TextBox
    {
    private const int WM_KEYDOWN = 0x0100;
    private const int WM_KEYUP   = 0x0101;
    private const int WM_CHAR    = 0x0102; protected override void WndProc(ref System.Windows.Forms.Message m)
    {
    switch (m.Msg)
    {
    case WM_CHAR:
    //MessageBox.Show(m.WParam.ToString());
    int key=(int)m.WParam;
    if ((key>=48 && key<=58) || key==46)
    {
    base.WndProc(ref m);
    } break;
    default:
    base.WndProc(ref m);
    break;
    }
    }
    }
      

  8.   

    在文本框的keydown事件中加入:
    if ((key>=48 && key<=58) || key==46)
    {
      e.handle=true;//輸入無效
    }
    esle
    {
      e.handle=false;//能輸入
    }