我已经将winform的KeyPreview属性设置为true.
用代码如何捕捉用户按了Ctrl + F6或者Shift + Ctrl + Alt + F8 之类的组合键值?
谢谢!

解决方案 »

  1.   

    最好能在KeyPress()事件中捕捉。
      

  2.   

    参考看看!
    ADO.NET 如何读取 Excel (上)
    http://www.cnblogs.com/Jinglecat/archive/2006/08/15/477472.html
    ADO.NET 如何读取 Excel (下)
    http://www.cnblogs.com/Jinglecat/archive/2006/08/26/487167.html
      

  3.   

    不好意思,回错帖子了,你的应该这样处理,在KeyDown中比较好处理:
            private void Form2_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.Control && e.KeyCode == Keys.F6 )
                {
                    MessageBox.Show("按下了ctrl + F6");
                }            if (e.Shift && e.Control && e.Shift && e.KeyCode == Keys.F8)
                {
                    MessageBox.Show("Shift + Ctrl + Alt + F8");
                }
            }
      

  4.   

    if(e.Control && e.KeyCode == Keys.F6){}
      

  5.   


                //还是这样好些:
                if ((e.Modifiers == Keys.Control) && (e.KeyCode == Keys.F6))
                {
                    MessageBox.Show("Ctro + F6");
                }
                ////如果使用以下的代码的话,即使 按下shist+ctrl 或  shift+ctrl+alt+f6 也会触发以下的代码。
                //if (e.Control && e.KeyCode == Keys.F6)
                //{
                //    MessageBox.Show("按下了ctrl + F6");
                //}            if ((e.Control && e.Alt &&  e.Shift ) && (e.KeyCode == Keys.F8))
                {
                    MessageBox.Show("ctrl + shift + alt   + F8");
                }
      

  6.   

    windows消息循环protected override void WndProc(ref Message m)
    {
    // TODO:  添加 Form1.WndProc 实现
    //响应DTU消息
    if(m.Msg == 0x21)//0x21
    gt.m_AutoEvent.Set();
    else
    base.WndProc (ref m);
    }
      

  7.   

     
    computerfox
    是正解
      

  8.   

    computerfox,是正确的,但我现在想用enter 上下左右键来的组合来判断