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

问题描述

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

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

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

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

解决方案

使用下面的代码试试看
//来源: 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,程序都可以响应。

时间: 2024-11-02 23:03:19

panel-C# Winfrom项目,如何实现Panel控件响应键盘事件的相关文章

在C# winfrom项目,form窗体Picturebox控件加载的图片有闪动现象

问题描述 在C# winfrom项目,form窗体Picturebox控件加载的图片有闪动现象 在C# winfrom项目中,有两个form窗体(form1.form2),在form1中显示监控视频图像实时画面. 在form1窗体中居中弹出form2窗体(form2窗体不透明度设置为Opacity:80%),在form2窗体有一个Picturebox控件(设置充满整个form2窗体),在Picturebox中放置一张图片. 目前遇到一个问题:在form1窗体中居中显示form2窗体的过程中,fo

vc++-如何使对话框里的EDIT控件响应键盘的回车键???

问题描述 如何使对话框里的EDIT控件响应键盘的回车键??? 我想解决的问题是: 在VC++程序中,向Edit控件中输入数据,然后敲击回车,就把输入的数据输送给其他文件. 想问问大家有没有程序实例或者解题思路????? 解决方案 void CMyEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); { if (nChar == VK_RETURN) { 你的处理代码 } CEdit::OnKeyDown(nChar, nRepCnt, n

在Edi控件响应单击事件创建t对话框问题

问题描述 在Edi控件响应单击事件创建t对话框问题 我在Edit控件中响应单击事件然后创建模态对话框,可是关闭模态对话框的时候程序就崩溃了 代码如下: BOOL CBolg1Dlg::PreTranslateMessage(MSG* pMsg) { // TODO: Add your specialized code here and/or call the base class /*if (pMsg->hwnd == m_edit4.m_hWnd && pMsg->messa

dataview数据绑定-C#winfrom程序中关于dataview控件的数据绑定问题!能显示但有点小问题!望指点!

问题描述 C#winfrom程序中关于dataview控件的数据绑定问题!能显示但有点小问题!望指点! 如图: 我希望绑定的数据显示在我以做好的Dataview格子内,结果它从旁边出来了,不知哪里设置不对.有遇到过相同情况的同学吗,望指点. 解决方案 我发表下我的意见, 你这个应该是在dategridview中 设置了列名,然后你填充的时候没有注意,直接填充的 如果你需要这些显示 你完全可以在填充前 select price as "成人票价" 这样的. 或者填充前把 ds设置列名什么

asp.net-c#,webform项目,使用devexpress控件,使用aspxgridview进行数据的显示

问题描述 c#,webform项目,使用devexpress控件,使用aspxgridview进行数据的显示 对aspxgridview进行group,我现在知道了其中一行的行号,怎么一下打开该行下的所有的分组节点 解决方案 http://www.lmwlove.com/ae/ID80 解决方案二: DevExpress控件的使用DevExpress控件使用

c++编写的项目调用MFC的控件

问题描述 c++编写的项目调用MFC的控件 之前同事用纯C++写了个项目,现在说要加个MFC的控件(加个webbrowser控件),但是我刚接触C++.请问下这个可不可行,有没有相关的示例学习学习 解决方案 你说的c++是什么?什么编译器,用的什么类库.另外webbrowser不是mfc的控件,而是封装在一个activex库(shdocvw.dll)中的. 解决方案二: 如果要深入了解MFC的话,建议看看<深入浅出MFC>,不然你用MFC都是一知半解暗箱操作 解决方案三: 没问题呀,但是在Wi

c# winfrom 获取两个 时间控件的时间 然后生成这个时间段的时间 形成下来列表

问题描述 c# winfrom 获取两个 时间控件的时间 然后生成这个时间段的时间 形成下来列表 c# winfrom 获取两个时间控件的时间 然后生成这个时间段的时间 形成下来列表 这个下拉列表里面的时间就是这个时间段中的每一天(日期). 这个怎么来实现呢? 解决方案 放两个datepicker控件dtp1,dtp2,用 sql = string.Format("select * from table where 日期字段 between '{0}' and '{1}'", dtp1

做项目你们都用控件吗?那个控件用的多呀?

问题描述 做项目你们都用控件吗?那个控件用的多呀? 解决方案 解决方案二:web控件少用,多用HTML控件.不知楼主是否说的这两种控件解决方案三:webdiyer的分页控件.解决方案四:以前datagrid,datalist用的最多.现在不用这两个了.动态的写.觉得一是对自己是种锻炼,二是可以灵活实现想要的功能.解决方案五:呵呵解决方案六:datagrid,datalist我现在还在用这个~~感觉还可以解决方案七:TextBoxButtonDropDownListPanel解决方案八:当然用啊.

ASP.NET 页面中动态增加的控件、添加事件第1/2页_实用技巧

要求:页面上有一个Add按钮,每点击一次该按钮,页面上动态创建一个WebPartZone! 提醒:WebPartZone只能在OnInit或之前才能创建,否则报异常! 大家都知道,按钮的点击事件是在RaisePostbackEvent时触发的,这意味着点击事件在OnLoad阶段之后才执行,远远落后于 OnInit阶段,而且ViewState在OnLoad时才准备好,OnInit以及之前的阶段根本就不能使用ViewState!如果试图在按钮点击事件里面创建WebPartZone等控件,唯一的后果就