急教,
一winform窗体,光标在任意位置时,单按左边ctrl键就调用某方法;
但ctrl+c、ctrl+v时不触发

解决方案 »

  1.   

    按下还是按住还是按键后触发?这三个监听的事件是不一样的,如果是按下或按住触发你可能要通过Windows API 拦截窗口message来做了。如果是按键过程完成后(按下->按住->松开整个过程完成后)拦截keypress事件应该可以通过e.keycode判断出来。
    很久没做过窗体这些事件的拦截了,也许我说的全是错的也说不定。
      

  2.   

    给窗体添加一个按键事件
    判断是不是按下了Ctrl键
      

  3.   

    注册窗体KeyUp事件,就是按键按下松开后触发的事件
    在事件内写判断语句:
    if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
      

  4.   

    我重新看了一下你的需求,请你仔细回忆一下你按Ctrl+c和Ctrl+v的时候是怎么按键的,是不是先按住Ctrl再按c或者v,这样的话,你在单按坐标Ctrl的时候就已经触发了事件后再按下c的时候到底该怎么判断呢?所以你要说清楚,你这个单按,是按下去,按住还是按下去松开整个过程。
      

  5.   

    ctrl c   ctrl v是系统命令
    你要override 窗体的ProcessCmdKey看看
      

  6.   

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
            {
                if (keyData == (Keys.Control | Keys.C))
                {
                    //你的代码
                    return true;
                }
                else
                  return  base.ProcessCmdKey(ref msg, keyData);
            }