klvoek

klvoek

C# winForm 键盘事件

相关问题描述:

    KeyDown捕获不到键盘事件,按下键盘上的方向键不能触发KeyDown事件。按键没有KeyPress事件响应,键盘按键只有KeyUp响应。

 

这个问题可以通过查询MSDN里关于KeyDown、KeyPress、KeyUp的注释,找到原因。在MSDN上记录有,控件会根据自身的情况不同处理某些特殊键盘按键(除去正常字符输入键之外的其他按键),而导致KeyPress-KeyDown-KeyUp中的部分按键事件触发。所以,在设计程序的时候,如果遇到某些按键事件关联的业务逻辑没有被触发,一定要考虑这方面的因素。

 

问题到这里也就算解决了,为了让文章显得丰满一点,这里贴一点附加的东西(图片、代码什么的)

 

    控件 的按键相关事件

        void MainForm_KeyUp(object sender, KeyEventArgs e)
        {
        }

        void MainForm_KeyDown(object sender, KeyEventArgs e)
        {
        }

        void MainForm_KeyPress(object sender, KeyPressEventArgs e)
        {
        }

        protected override bool IsInputChar(char charCode)
        {
            return base.IsInputChar(charCode);
        }

        protected override bool IsInputKey(Keys keyData)
        {
            return base.IsInputKey(keyData);
        }

        protected override bool ProcessKeyEventArgs(ref Message m)
        {
            return base.ProcessKeyEventArgs(ref m);
        }
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            return base.ProcessCmdKey(ref msg, keyData);
        }

        protected override bool ProcessDialogKey(Keys keyData)
        {
            return base.ProcessDialogKey(keyData);
        }

        protected override bool ProcessKeyMessage(ref Message m)
        {
            return base.ProcessKeyMessage(ref m);
        }

        protected override bool ProcessKeyPreview(ref Message m)
        {
            return base.ProcessKeyPreview(ref m);
        }

        protected override bool ProcessDialogChar(char charCode)
        {
            return base.ProcessDialogChar(charCode);
        }

        protected override bool ProcessMnemonic(char charCode)
        {
            return base.ProcessMnemonic(charCode);
        }

        protected override bool ProcessTabKey(bool forward)
        {
            return base.ProcessTabKey(forward);
        }

KeyDown的英文MSDN:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown.aspx

 

代码下载:http://www.itivy.com/DownloadFile.ashx?id=634458093510515127

 

 参考文章:http://www.cnblogs.com/stublue/archive/2010/08/31/1814076.html

Posted by klvoek @ 2011-7-9 11:26:23 阅读(1433) 评论(0)
上一篇:C# Socket异步使用
下一篇:MSBuild不能编译vs安装项目

我也来参与讨论

你还可以输入600/600个字符 发表评论
称呼: (必填) 登录 | 开通博客
邮箱: (选填) 你的邮箱地址不会被公开
网站: (选填)
验证码: (必填)
看不清换一张 看不清楚换一张