sxl_88
sxl_88
采纳率50%
2015-02-13 11:56 阅读 2.6k
已采纳

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

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    zzznnn zzznnn 2015-02-25 03:37

    使用下面的代码试试看
    //来源: 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;
    }

    点赞 评论 复制链接分享
  • zh538438 郑与天 2015-02-25 02:58

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

    点赞 评论 复制链接分享

相关推荐