关于捕获键盘信息的processDialogkey方法2--具体应用

自定义控件里的keydown方法无法捕获所有的按键消息的处理方法1(自定义控件里的keydown方法无法获取的键值如上下左右键等)

处理办法具体如下:

1、首先在自定义控件UserControl1中重写ProcessDialogKey方法

 自定义控件UserControl1中重写ProcessDialogKey方法代码如下:       

  protected override bool ProcessDialogKey(Keys keyData)
        {
            if (keyData == Keys.Space || keyData == Keys.Up 
                || keyData == Keys.Down || keyData == Keys.Left 
                || keyData == Keys.Right) 
            {
                MessageBox.Show(keyData.ToString(), "提示");
                //SendKeys.Send(keyData.ToString());
                return false;
            }
            return base.ProcessDialogKey(keyData);
        }

这时自定义控件里的keydown事件里面就可以获得上下左右键了

代码如下:

 private void UserControl1_KeyDown(object sender, KeyEventArgs e)
        {
            MessageBox.Show("提示11111111", e.KeyCode.ToString() + e.KeyData.ToString() + e.KeyData.ToString());
        }

2、如果新建窗体TestForm添加自定义控件UserControl1,想在窗体中响应TestForm窗体的TestForm_KeyDown事件,那又该怎么办呢???

继续往下看,步骤3中设置TestForm窗体的KeyPreview的属性为true属性即可

3、设置TestForm窗体的KeyPreview的属性为true(这个至关重要!!!)

然后TestForm窗体的TestForm_KeyDown事件就可以获取键值了

代码如下

       private void TestForm_KeyDown(object sender, KeyEventArgs e)
        {
            MessageBox.Show("提示", e.KeyCode.ToString());
        }

原文地址:https://www.cnblogs.com/1175429393wljblog/p/5580798.html