就那键盘 左键(控制键)举例吧
左键不是有效字符(有效字符:字母,数字等不为空就行)
左键的ASCII为37 (e.keyvalue)
             left(e.keycode)
             left(e.keydate)MessageBox.Show(Convert.ToChar(e.KeyValue).ToString())  
//返回%
我怎样才能返回空呢求助

解决方案 »

  1.   

            private void txt_KeyPress(object sender, KeyPressEventArgs e)
            {
                e.Handled = e.KeyChar < '0' || e.KeyChar > '9';//只允许输入数字
                  if (e.KeyChar == (char)8 || e.KeyChar == (char)46)//如果是退格键或“.”
                {
                    e.Handled = false;//允许输入
                }
            }
    这是向TextBox中输入字符的代码,只允许数字、退格键、“.”三种字符,对于字母你可以自己去找一下ASCII字码表查一下,应该可以完成!具体没理解你的意思!
      

  2.   

    可能是说明不清楚:
    当我们键盘输入时:
    键盘按下      有效字符     ASCII
    1             1            49
    a             a            65
    控制方向左键  空           37  ( 我就想得到空,这样就可以根据空来判断是否为有效字符了)
      

  3.   

    键盘按下 有效字符 ASCII
    1---------1---------49
    a---------a---------65
    控制方向左键--空--37 ( 我就想得到空,这样就可以根据空来判断是否为有效字符了)
      

  4.   

    不是这样处理的
    你如果是要处理输入字符,那就应该直接处理KeyPress事件,而不是处理KeyDown。像方向键这种键,它本来就不产生字符消息(也就是不触发KeyPress事件)。
    你想通过把e.keyvalue转化为字符来判断“是否为有效字符”这个是行不通的。e.keyvalue它是按键的扫描码,它和字符码完全是两个体系的东西。把扫描码转化字符没有任何根据和意义。只不过为了形成某种意义上的统一,一些按键的扫描码被定义为了相关字符的ASCII码。比如字母键的扫描码被定义为了对应大写字母的ASCII码,那你说为什么不是对应小写字母的ASCII码,没什么,就是这么定义的。