void button1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Control == true && e.KeyCode == Keys.Space)
            {
                button1.Text = e.KeyCode.ToString();
            }
            //button1.Text = e.KeyCode.ToString();
        }我想实现一个功能,那就是当按钮button1激活时,按着ctrl和space的时候,将实现一个指定的操作,可是发现这个捕获总是错误的,我按ctrl和space的时候,e.KeyCode 并不等于space,而是另一个值,这到底是怎么回事??请问具体怎么实现啊??

解决方案 »

  1.   

    感觉你的思路好像有点问题。KeyDown事件是当某个键按下时触发该事件。按下一个键触发一次,所以你是得不到该组合键的信息的。只能得到某一个键的信息。
    我是使用消息来处理组合键信息的。
      

  2.   

    组合键的效果键盘钩子可以实现,但是感觉使用API还是不爽。
    换个思路,你要实现什么逻辑需要捕捉CTRL+SPACE键盘动作,是要控制某个文本框录入内容的输入法吗?如果是这个,可以用其它方法实现………………
      

  3.   

    bool bt=true
    void Form_KeyDown(object sender, KeyEventArgs e)
      {
      if (e.KeyChar ==  (char)32)
      {
        if(bt)//按下你的SPACE,调用CLICK      { 
      button1.Text = e.KeyCode.ToString();
          }
      }
      //button1.Text = e.KeyCode.ToString();
      }
      

  4.   

    有专门的类或者方法指示 是否按下CTRL、SHIFT很久以前看过,MSDN上查查
      

  5.   


    我的目的是想当button1按钮激活后,我按键盘上的CTRL+SPACE能够触发一个指定的事件,我并不是一定要在KeyDown事件中实现,只是keypress参数中的e根本就没有对ctrl的按下判断,所以我才使用有ctrl监视的keydown事件,但是总是得不到我需要的效果.
      

  6.   

    杯具啊!
    我在自己的电脑(XP SP2)测试不能实现该功能,但是在公司的电脑(win 7)上却测试通过了...
            void button1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Control == true && e.KeyCode == Keys.Space)
                {
                    MessageBox.Show("XX");
                }
                //if ((e.Control ) && (e.KeyCode == System.Windows.Forms.Keys.Space ))
                //{
                //    MessageBox.Show("XX");
                //}   
            }
      

  7.   

    二.判断组合键一般是在键事件如KeyDown(object sender, KeyEventArgs e)中判断,如判断是否是Ctrl+a组合键:if(e.control && e.KeyCode==Keys.a){     ... ...}0 0 0 
    (请您对文章做出评价)该链接:
    http://www.cnblogs.com/mywebname/articles/1336490.html