winform键盘事件的响应(C#,winform)

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

        {

            switch (keyData)

            {

                case Keys.Right:

                    MessageBox.Show("Right");

                    break;

                case Keys.Left:

                    MessageBox.Show("Left");

                    break;

                case Keys.Up:

                    MessageBox.Show("up");

                    break;

                case Keys.Down:

                    MessageBox.Show("down");

                    break;

                case Keys.Space:

                    MessageBox.Show("space");

                    break;

                case Keys.Enter:

                    MessageBox.Show("enter");

                    break;

            }

            //return false;//如果要调用KeyDown,这里一定要返回false才行,否则只响应重写方法里的按键.

            //这里调用一下父类方向,相当于调用普通的KeyDown事件.//所以按空格会弹出两个对话框

            //return base.ProcessCmdKey(ref msg, keyData);

             return true;//这里return true 否则控件焦点会跟着方向键改变

        }

第一种:重载ProcessCmdKey方法,直接在winform程序中加入这个就可以了

 protected   override   bool   ProcessCmdKey(ref       System.Windows.Forms.Message   msg,   System.Windows.Forms.Keys   keyData)  
                  {  
                          if   (keyData   ==   (Keys.Control   |   Keys.N))  
                          {   
                                 MessageBox.Show("按下了Control+N")
                                  return   true;  
                          }   
                          return   base.ProcessCmdKey(ref       msg,   keyData);  
               

你可能感兴趣的:(winform,C#)