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 ...
随机推荐
- 20145315 《Java程序设计》第七周学习总结
20145315 <Java程序设计>第七周学习总结 教材学习内容总结 第十三章 时间与日期 13.1.1时间的度量 1.格林威治时间(GMT):参考太阳到达最高点,有时间误差. 2.世界 ...
- 开源工具-Json 解析器 Jackson 的使用
Json已经成为当前服务器与 WEB 应用之间数据传输的公认标准.Java 中常见的 Json 类库有 Gson.JSON-lib 和 Jackson 等.相比于其他的解析工具,Jackson 简单易 ...
- 如何解决Nginx php 50x 错误
SEO反馈百度爬虫经常504,一般情况下是由nginx默认的fastcgi进程响应慢引起的,但也有其他情况,这里我总结了一些解决办法供大家参考. 方法/步骤 一般50x状态码问题分析: Nginx ...
- Python学习札记(三十六) 面向对象编程 Object Oriented Program 7 __slots__
参考:slots NOTE 1.动态语言灵活绑定属性及方法. #!/usr/bin/env python3 class MyClass(object): def __init__(self): pas ...
- Flask 6 模板2
NOTE Jinja2提供了多种控制程序,可以用来改变模板的渲染流程. 1.在模板中使用条件控制语句: templates/condition.html: {% if user %} Hello, { ...
- html 入门2-表
html 入门-列表 表格 表单 一.表标签 1,无序列表 ( ul:li ) 注意:代码排版必须要层次分明 2,有序列表 (ol:li) 3,自定义列表 (dl:li) 二.表格标签 1,tabl ...
- lua 删除table元素
tab1 = { key1 = "val1", key2 = "val2", "val3" } for k, v in pairs(tab1 ...
- 使用 Git Hook 自动部署 Hexo 到个人 VPS
安装 Hexo 既然我的标题都已经那样写了,当然这个小节就不是本篇文章的重点了. 关于 Hexo 的安装跟配置,其实网上已经有很多很多文章了,随便一搜一大把.这里就有一篇超详细的,大家可以参考一下. ...
- markdown哈哈
function box(){ 世界你好 }
- linux利用软件raid搭建iscsi存储
分区:parted /dev/sdbmklabel gptmkpart primary ext4 0% 100%set 1 raid mdadm -Cv /dev/md0 -n 4 -l5 /dev/ ...