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事件不能用的更多相关文章

  1. [Form Builder]Form中的validate验证事件

    转:http://yedward.net/?id=70 Form的validate行为可以由一个总的form级别的validation属性来控制,可以通过set_form_property来设置成PR ...

  2. form中的button默认提交事件

    <form action=""> <input autocomplete="off" type="text" name=& ...

  3. C# winform KeyPress 事件中对应的数字

    C#  winform KeyPress 事件中对应的数字所有e.KeyChar值的意思 常用ASCII码表 你自己看看应该就明白了 键盘 ASCII码 键盘 ASCII码 ESC 27 7 55 S ...

  4. asp.net中按钮回车事件(转自http://www.cnblogs.com/adinet/archive/2013/03/03/2941424.html)

    在做ASP.net WEB应用的时候,常常遇到会在同一个页面里添加多个按钮,而每个按钮肯定都会触发页面回送事件. 在ASP.NET中,只能指定一个带有runat="server"的 ...

  5. 如何让Form窗体接收KeyDown事件?

    在使用.Net Framework编写窗体应用程序的时候,有时有需要响应窗体的按键消息.当窗体上没有任何其他控件的时候,窗体是可以直接响应这些消息的. 但是当窗体上有其他控件时,会发现窗体再也不会响应 ...

  6. 深入了解jquery中的键盘事件

    很多时候,我们需要获取用户的键盘事件,下面就一起来看看jquery是如何操作键盘事件的. 一.首先需要知道的是: 1.keydown() keydown事件会在键盘按下时触发. 2.keyup() k ...

  7. C#中WinForm窗体事件的执行次序

    C#中WinForm窗体事件的执行次序如下: 当 Windows Form 应用程序启动时,会以下列顺序引发主要表单的启动事件:        System.Windows.Forms.Control ...

  8. 分分钟用上C#中的委托和事件之窗体篇

    上次以鸿门宴的例子写了一篇名为<分分钟用上C#中的委托和事件>的博文,旨在帮助C#初学者迈过委托和事件这道坎,能够用最快的速度掌握如何使用它们.如果觉得意犹未尽,或者仍然不知如何在实际应用 ...

  9. ligerui_实际项目_003:form中添加数据,表格(grid)里面显示,最后将表格(grid)里的数据提交到servlet

    实现效果: "Form"中填写数据,向本页"Grid"中添加数据,转换成Json数据提交,计算总和,Grid文本框可编辑,排序 图片效果: 总结: //disp ...

随机推荐

  1. Java Mail 邮件发送简单封装

    上一篇文章我们用写了一个Java Mail 的Demo,相信你已经可以用那个例子来发送邮件了.但是Demo 有很多的问题. 首先每次发送需要配置的东西很多,包括发件人的邮箱和密码.smtp服务器和SM ...

  2. 第7章 调试和错误处理 7.1.1 VS中的调试

    VS有一个输出窗口,调用方法是 需要注意的是,这个窗口有两个模式,使用其中的下拉列表就可以选择这些模式.可以在Build和Debug模式之间切换.Build和Debug模式分别显示编译和运行期间的信息 ...

  3. 【异常记录(六)】vs文件乱码:文件加载,使用Unicode(UTF-8)编码加载文件xxx时,有些字节已用Unicode替换字符替换。保存该文件将不会保留原始文件内容。

    VS2013偶遇这种情况,页面汉字编码出现乱码.  .... 按照网上查到的:   工具>选项>文本编辑器> 勾选了  然并卵,还是乱码... 其实炒鸡简单 用记事本打开另存为,选择 ...

  4. UVa 10791 最小公倍数的最小和(唯一分解定理)

    https://vjudge.net/problem/UVA-10791 题意: 输入整数n,求至少两个正整数,使得它们的最小公倍数为n,且这些整数的和最小. 思路: 首先对n进行质因数分解,举个例子 ...

  5. java 23种设计模式,一般情况下,常用的有哪些? 转载

    原址:http://wangle.iteye.com/blog/196972 工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式 ...

  6. 雷林鹏分享:Ruby CGI方法

    Ruby CGI方法 以下为CGI类的方法列表: 序号方法描述 1CGI::new([ level="query"]) 创建 CGI 对象.query可以是以下值: query: ...

  7. git-it 教程,一些git知识点。/ 如何解决merge conflict/ 如何使用Github Pages./Git术语表

    一个git使用教程 https://:.com/jlord/git-it-electron#what-to-install 一个在线Github的功能教学:https://lab.github.com ...

  8. Rails 5 Test Prescriptions 第6章Adding Data to Tests

    bcreate the data quickly and easily.考虑测试运行的速度. fixtures and factories.以及下章讨论的test doubles,还有原生的creat ...

  9. redhat7下mysql5.7.12重启电脑后起不来问题

    环境介绍: 64位reahat7 mysql5.7.12 初次安装后mysql运行是正常的,重启操作系统后检查mysql运行状态如下: [root@localhost ~]# systemctl st ...

  10. 也来说说C#异步委托 (转自 Rising_Sun)

    前些日子,看到园子里面有人用老王喝茶的例子讲解了一下同步和异步,虽然没有代码实现,但是能够通俗易懂的讲解了同步.异步.阻塞.非阻塞的关系了,今天借题发挥,用一个热水器加热洗澡的例子来具体演示一下C#使 ...