Form中的keypress事件不能用
Form中的keypress事件不能用
编写人:CC阿爸
2015-4-8
近期在修改系统时,想给一画面增加一个组合键功能,但在form_keypress事件中加入代码,但无论如何也不能触发该动作。
今天在这里,我想与大家一起分享代码不执行的原因,在此做个小结,以供参考。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。
1、 首先找到我出问题的根本原因是:KeyPreview 没有设置true ,如果没有设置为true,画面如果有button存,象return enter之类集点肯定会在button上。
所以第一时间先将KeyPreview 设置为true。
2、 下面再看看如何处理组合键的问题:
1) 二个组合键比较容易处理
private void frmLocalUpdate_KeyPress(object sender, KeyPressEventArgs e) //CTRL+S { if ((Control.ModifierKeys & Keys.Control) == Keys.Control && e.KeyChar==) { OpenUpload(); } }
要指定在按键(如 Enter 或 Tab)时不显示的字符,以及表示操作而不表示字符的键,请使用下表中的代码。
键 |
代码 |
Backspace |
{BACKSPACE}、{BS} 或 {BKSP} |
Break |
{BREAK} |
Caps Lock |
{CAPSLOCK} |
Del 或 Delete |
{DELETE} 或 {DEL} |
向下键 |
{DOWN} |
End |
{END} |
Enter |
{ENTER} 或 ~ |
Esc |
{ESC} |
Help |
{HELP} |
Home |
{HOME} |
Ins 或 Insert |
{INSERT} 或 {INS} |
向左键 |
{LEFT} |
Num Lock |
{NUMLOCK} |
Page Down |
{PGDN} |
向上翻页 |
{PGUP} |
Print Screen |
{PRTSC}(保留供将来使用) |
向右键 |
{RIGHT} |
Scroll Lock |
{SCROLLLOCK} |
TAB |
{TAB} |
向上键 |
{UP} |
F1 |
{F1} |
F2 |
{F2} |
F3 |
{F3} |
F4 |
{F4} |
F5 |
{F5} |
F6 |
{F6} |
F7 |
{F7} |
F8 |
{F8} |
F9 |
{F9} |
F10 |
{F10} |
F11 |
{F11} |
F12 |
{F12} |
F13 |
{F13} |
F14 |
{F14} |
F15 |
{F15} |
F16 |
{F16} |
数字键盘加号 |
{ADD} |
数字键盘减号 |
{SUBTRACT} |
数字键盘乘号 |
{MULTIPLY} |
数字键盘除号 |
{DIVIDE} |
要指定与 Shift、Ctrl 和 Alt 键的任意组合一起使用的键,请在这些键代码之前加上以下一段或多段代码。
键 |
代码 |
Shift |
+ |
Ctrl |
^ |
Alt |
% |
要指定在按一些键时应同时按住 Shift、Ctrl 和 Alt 键的任意组合,请将这些键的代码放在括号内。 例如,要指定按 E 和 C 时同时按住 Shift 键,请使用“+(EC)”。 要指定按 E 时应按住 Shift,之后按 C 时不按住 Shift,请使用“+EC”。
要指定重复键,请使用格式 {key number}。 键和数字之间必须放一空格。 例如,{LEFT 42} 表示按向左键 42 次;{h 10} 表示按 H 10 次。
(以上部分是摘自微软的msdn 详情可参考:https://msdn.microsoft.com/zh-cn/library/system.windows.forms.sendkeys.send.aspx)
2) 三个键:处理三个键的组合就比较麻烦,利用上面的方法我是没有成功过。
这时候我们可能就得利用重写ProcessCmdKey了
1 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 2 { 3 if ((keyData & Keys.Alt) == Keys.Alt)//检测到alt 4 { 5 if ((keyData & Keys.Control) == Keys.Control) 6 { 7 System.Windows.Forms.SendKeys.Send("^%"); 8 return true; 9 } } return base.ProcessCmdKey(ref msg, keyData);
12 }
具体就需要各位好好的去自已去调试了。
3、有关更多的技术分享,大家可以加入我们的技术群。
欢迎加入技术分享群:238916811
Form中的keypress事件不能用的更多相关文章
- [Form Builder]Form中的validate验证事件
转:http://yedward.net/?id=70 Form的validate行为可以由一个总的form级别的validation属性来控制,可以通过set_form_property来设置成PR ...
- form中的button默认提交事件
<form action=""> <input autocomplete="off" type="text" name=& ...
- C# winform KeyPress 事件中对应的数字
C# winform KeyPress 事件中对应的数字所有e.KeyChar值的意思 常用ASCII码表 你自己看看应该就明白了 键盘 ASCII码 键盘 ASCII码 ESC 27 7 55 S ...
- asp.net中按钮回车事件(转自http://www.cnblogs.com/adinet/archive/2013/03/03/2941424.html)
在做ASP.net WEB应用的时候,常常遇到会在同一个页面里添加多个按钮,而每个按钮肯定都会触发页面回送事件. 在ASP.NET中,只能指定一个带有runat="server"的 ...
- 如何让Form窗体接收KeyDown事件?
在使用.Net Framework编写窗体应用程序的时候,有时有需要响应窗体的按键消息.当窗体上没有任何其他控件的时候,窗体是可以直接响应这些消息的. 但是当窗体上有其他控件时,会发现窗体再也不会响应 ...
- 深入了解jquery中的键盘事件
很多时候,我们需要获取用户的键盘事件,下面就一起来看看jquery是如何操作键盘事件的. 一.首先需要知道的是: 1.keydown() keydown事件会在键盘按下时触发. 2.keyup() k ...
- C#中WinForm窗体事件的执行次序
C#中WinForm窗体事件的执行次序如下: 当 Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件: System.Windows.Forms.Control ...
- 分分钟用上C#中的委托和事件之窗体篇
上次以鸿门宴的例子写了一篇名为<分分钟用上C#中的委托和事件>的博文,旨在帮助C#初学者迈过委托和事件这道坎,能够用最快的速度掌握如何使用它们.如果觉得意犹未尽,或者仍然不知如何在实际应用 ...
- ligerui_实际项目_003:form中添加数据,表格(grid)里面显示,最后将表格(grid)里的数据提交到servlet
实现效果: "Form"中填写数据,向本页"Grid"中添加数据,转换成Json数据提交,计算总和,Grid文本框可编辑,排序 图片效果: 总结: //disp ...
随机推荐
- 20145318《网络对抗》逆向及Bof基础
实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- numpy数组广播
numpy数组的广播功能强大,但是也同时让人疑惑不解,现在让我们来谈谈其中的原理. 广播原则: 如果两个数组的后缘维度(即:从末尾开始算起的维度)的轴长相符或其中一方的长度为1,则认为它们是广播兼容的 ...
- HDU 6354 Everything Has Changed(余弦定理)多校题解
题意:源点处有个圆,然后给你m个圆(保证互不相交.内含),如果源点圆和这些原相交了,就剪掉相交的部分,问你最后周长(最外面那部分的长度). 思路:分类讨论,只有内切和相交会变化周长,然后乱搞就行了.题 ...
- Python学习札记(四十三) IO 3
参考:操作文件和目录 NOTE: 1.Python内置的os模块可以直接调用操作系统提供的接口函数: 2.os.name 打印操作系统的名称:如果是posix,说明系统是Linux.Unix或Mac ...
- 动画的使用—Drawable Animation
Drawable Animation可以称为帧动画,因为它是通过每次播放一帧Drawable资源实现的. Drawable Animation算不上真正意义上的动画,因为它的内部实现是通过定时发送消息 ...
- Mongo配置基础
数据库也是一种服务,数据库的本质也是一个文件,所以说我们把文件存入text和存入数据库的本质是一样的,只是数据库的格式化的删除和添加. 分为四部分, mongo的启动详解 导入导出,运行时备份 Fsy ...
- phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php)
phpstudy一个域名配置两个网站(一个是thinkphp5,一个是原生php) 一.总结 一句话总结:把原生php的网站直接放到thinkphp5的public目录下可以解决以stem.aaaa. ...
- phpstorm 2017版代码提示功能开启解决方案
安装好phpstorm 2017之后 发现代码高亮和函数自动提示都失效了 在phpstorm底部面板的信息提示处发现有一条系统消息: 12:04:18 Power save mode is on Co ...
- Hadoop Ambari 安装
ambari 1.2.4 下载地址:http://www.apache.org/dist/incubator/ambari/ambari-1.2.4/ambari-1.2.4-incubating.t ...
- IOS-常用第三方开源框架介绍
iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角) 时间:2015-05-06 16:43:34 阅读:533 评论:0 收藏:0 [点我收藏+] ...