//常用ascii码
//48 57 65 90 97 122 27 08 32 33 45 126
//0  9  A  Z  a  z   es bs    !  -  ~想获取按键如果是一般性文本(即在 [!]到[~]之间的ascii码之间,或在 [0]到[z]之间)进行相关处理,
看到KeyDown.KeyEventArgs出来的结果令人望而却步。private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
   Text = string.Format("{0} {1} {2} {3}", e.KeyCode, e.KeyData.ToString(), (int)e.KeyData, e.KeyValue);
   //if(e.KeyValue>=33 && e.KeyValue <=126) DoSomething();
}e.KeyData、e.KeyCode、e.KeyValue //这些是啥玩意儿?我要取的就是字符“1”, 或者是ascii码“49”
字符区的“1”显示为“D1” //打屁多事
小键盘的“1”显示为“NumPad1”。且其KeyValue等于97,即“a”的ascii码,这不就是混帐嘛!!字符区的“-”显示为“(Oem啥的)”
小键盘的“-”显示为“(一串字母,减号的英文名)”
在下贴看到空军先生是另用消息循环来玩这飞机的:
http://topic.csdn.net/u/20070911/16/a1d714c6-0914-41d4-9301-495783ed359e.html?seed=521543502&r=55759696#r_55759696

解决方案 »

  1.   

    lz你搞错了,你得先清楚键码和ASCII码的区别,在键盘上,不是说你按了哪个键,就会出现哪个ASCII码的。。另外ASCII是显示用,给文本用的编码,不是键盘的键码
      

  2.   

    内容改为:
    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
      Text = string.Format("{0} {1} {2} {3}", e.KeyCode, e.KeyData.ToString(), (int)e.KeyData, e.KeyValue); //出来的是啥东东呀!! 没一个是我需要的。
      //if(e.KeyValue>=33 && e.KeyValue <=126) DoSomething();
      //if(e.KeyData.ToString()>='0' && e.KeyData.ToString() <='z') DoSomething();
    }
      

  3.   

    冰封30年出来才惊叹,大家上大号不用草纸呀?//言归正传,我就是想实现下面的功能,调用 DoSomething()
    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
      Text = string.Format("{0} {1} {2} {3}", e.KeyCode, e.KeyData.ToString(), (int)e.KeyData, e.KeyValue); //出来的是啥东东呀!! 没一个是我需要的。
      //if(e.KeyValue>=33 && e.KeyValue <=126) DoSomething();
      //if(e.KeyData.ToString()>='0' && e.KeyData.ToString() <='z') DoSomething();
    }
      

  4.   

    额,路过。顺便给lz递手纸话说日本一老兄没带手纸上twitter发条消息,5分钟手纸就送到了。lz真应该学学来着
      

  5.   

    用KeyPress,搞定
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        //
        Text = string.Format("{0} {1}", e.KeyChar, (int)e.KeyChar);

      

  6.   

    //if(e.KeyData.ToString()>='0' && e.KeyData.ToString() <='z') DoSomething();强大
      

  7.   

     //if(e.KeyValue>=33 && e.KeyValue <=126) DoSomething();
    代码还能这的写??
    哎。。 规范!!
      

  8.   


    //你的意思是??
    if((e.KeyValue >= 33) && (e.KeyValue <= 126))
    {
      DoSomething();
    }//>>引用13楼 # Sandy945 # (阿非 (艰难困苦,玉汝于成!))
    //>>if(e.KeyData.ToString()>='0' && e.KeyData.ToString() <='z') DoSomething();
    //>>强大
    //这是写给你们看的,精简、清晰,能让你们看得懂就是了,编译器是不能通过的。