C# Winfrom项目,如何实现Panel控件响应键盘事件

在C# Winfrom 项目中,有一个from窗体和一个Panel控件。
目前from窗体和Panel控件都是全屏显示。并且在Panel控件内用于加载显示外部应用程序。

目前遇到一个问题就是按下键盘的“Esc”键,无法响应键盘的事件。
无法实现按下键盘的“Esc”键后就立即退出整个程序。

请问怎么样解决下用户按下键盘的“Esc”键后无法响应键盘的事件?

2个回答

使用下面的代码试试看
//来源: http://www.cnblogs.com/zhwl/archive/2013/06/06/3121515.html
//重写ProcessCmdKey的方法
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
int WM_KEYDOWN = 256;
int WM_SYSKEYDOWN = 260;
if (msg.Msg == WM_KEYDOWN | msg.Msg == WM_SYSKEYDOWN)
{
switch (keyData)
{
case Keys.Escape:
this.Close();//esc关闭窗体
break;
}
}
return false;
}

这可能是因为你的键盘事件放在load里面或者其它只执行一次的函数里面。
你可以设置一个timer,设置enabled=true,interval=500,然后点击timer控件,在事件里面用if语句判断是否按下ESC键。这样你在任何时候按下ESC,程序都可以响应。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐