C#键盘事件处理(来源网上)
C#键盘事件处理
如果你希望用户按F1弹出chm帮助,代码如下:
private void FrmMain_Load(object sender, EventArgs e) {this.KeyPreview = true;//获取或设置一个值,该值指示在将键事件传递到具有焦点的控件前,窗体是否将接收此键事件。 }private void FrmMain_KeyUp(object sender, KeyEventArgs e) {if (Keys.F1 == e.KeyCode){//MessageBox.Show("您所按动的键是:" + e.KeyCode.ToString());Help.ShowHelp(this,@"C:\Users\HongYe\Desktop\RevitAPI.chm");} }
键盘事件是在用户按下键盘上的一个键的时候发生的,可分为两类。第一类是KeyPress事件,当按下的键表示的是一个ASCII字符的时候就会触发这类事件,可通过他的KeyPressEventArgs类型参数的属性KeyChar来确定按下的键的ASCII。使用KeyPress时间无法判断是否按下了修改键(Shift,Alt和Ctrl),为了判断这些动作,就要处理KeyUp 或KeyDown事件,这些时间组成了第二类事件。该类事件有一个KeyEventsArgs类型参数,通过该参数可以测试是否按下了一些修改键。
1. KeyPressEventArgs类的主属性(KeyPress事件的一个参数类型)
(1).Handle属性:用来获取或设置一个值,该值指示是否处理过KeyPress事件。
(2).KeyChar属性:用来获取按下的键对应的字符,通常是该键的ASCII玛(返回的是键盘的值,如按‘K‘返回就是K)。
2.KeyEventArgs类的主属性(KeyUp和KeyDown事件的一个参数)
(1).Alt属性:用来获取一个值,该值提示是否曾按下了Alt键
(2).Control属性:用来获取一个值,该值提示是否曾按下了Crtl键
(3).Shift属性:用来获取一个值,该值提示是否曾按下了Shift键
(4).Handle属性:用来获取一个值,该值提示是否曾处理过此事件
(5).KeyCode属性:以Keys枚举值返回键盘键的键码,该属性不包含修改键信息,用于测试指定的键盘键
(6).KeyData属性:以Keys枚举值返回键盘键的键码,该属性包含修改键信息,用于判断按下键的所有信息(可返回组合键)
(7).KeyValue属性:以整数形式返回键码,而不是Keys枚举类型值。用于获得所按下键的数字表示
(8).Modifiers属性:以Keys枚举值返回所按下的修改键,仅判断修改键的信息
3.如何在C#程序中定义这些事件:
C#中描述"KeyDown"、"KeyUp"的事件的Delegate是"KeyEventHandler"。而描述"KeyPress"所用的Delegate是"KeyPressEventHandler"。这二个Delegate都被封装在命名空"Syetem.Windows.Froms"中。为"KeyDown"、"KeyUp"的事件提供数据的类是"KeyEventArgs"。而为"KeyPress"事件提供数据的类是"KeyPressEventArgs"。同样这二者也被封装在命名空间"Syetem.Windows.Froms"中。
在C#程序定义"KeyDown"、"KeyUp"事件的语法如下:
"组件名称"."事件名称"+= new Syetem.Windows.Froms. KeyEventHandler("事件名称");
下面是程序中具体实现代码:
button1. KeyUp += new Syetem.Windows.Froms. KeyEventHandler(button1_KUp);
下面是响应上面事件的基本结构。
private void button1_KUp ( object sender , Syetem.Windows.Froms. KeyEventArgs e )
{
此处加入响应此事件的代码
}
在C#程序定义"KeyPress"事件的语法如下:
"组件名称"."事件名称"+= new Syetem.Windows.Froms. KeyPressEventHandler("事件名称");
下面是程序中具体实现代码:
button1. KeyPress += new Syetem.Windows.Froms. KeyPressEventArgs(button1_KPress);
在完成了事件的定义以后,就要在程序中加入响应此事件的代码,否则程序编译的时候会报错。下面是响应上面事件的基本结构。
private void button1_KPress ( object sender , Syetem.Windows.Froms. KeyPressEventArgs e )
{
此处加入响应此事件的代码
}
注释:程序中出现的"button1"是定义的一个按钮组件。
例子:
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
MessageBox.Show("您所按动的键是:"+e.KeyCode.ToString());
}
C# 中 KeyPress 、KeyDown 和KeyPress的详细区别[转]
最近在做一个程序,需要实现窗口下的F5 刷新功能。
研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的。
让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:)
1.这三个事件的顺序是怎么样的?
2.KeyDown 触发后,KeyUp是不是一定触发?
3.三个事件的定义
4.KeyDown、KeyUp 和KeyPress 之间的区别
5.如何区分是否按的是小键盘?
6.PrScrn按键三个事件能够捕获吗?
7.{菜单键}和{开始键}KeyPress能够捕获吗?
8.如何捕获系统的组合键?
9.通过什么方式捕获PrScrn按键事件?
(一)键事件按下列顺序发生:
KeyDown
KeyPress
KeyUp
(二)KeyDown触发后,不一定触发KeyUp,当KeyDown 按下后,拖动鼠标,那么将不会触发KeyUp事件。
(三)定义
KeyDown:在控件有焦点的情况下按下键时发生。
KeyPress:在控件有焦点的情况下按下键时发生。(下面会说和KeyDown 的区别)
KeyUp:在控件有焦点的情况下释放键时发生。
(四)KeyPress 和KeyDown 、KeyPress之间的区别
1.KeyPress主要用来捕获数字(注意:包括Shift+数字的符号)、字母(注意:包括大小写)、小键盘等除了F1-12、SHIFT、Alt、Ctrl、Insert、Home、PgUp、Delete、End、PgDn、ScrollLock、Pause、NumLock、{菜单键}、{开始键}和方向键外的ANSI字符
KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键(这里不讨论特殊键盘的特殊键)
2.KeyPress 只能捕获单个字符
KeyDown 和KeyUp 可以捕获组合键。
3.KeyPress 可以捕获单个字符的大小写
4.KeyDown和KeyUp 对于单个字符捕获的KeyValue 都是一个值,也就是不能判断单个字符的大小写。
5.KeyPress 不区分小键盘和主键盘的数字字符。
KeyDown 和KeyUp 区分小键盘和主键盘的数字字符。
6.其中PrScrn 按键KeyPress、KeyDown和KeyUp 都不能捕获。
(五)系统组合键的判定
在使用键盘的时候,通常会使用到CTRL+SHIFT+ALT 类似的组合键功能。对于此,我们如何来判定?
通过KeyUp 事件能够来处理(这里说明一下为什么不用KeyDown,因为在判定KeyDown的时候,CTRL、SHIFT和ALT 属于一直按下状态,然后再加另外一个键是不能准确捕获组合键,所以使用KeyDown 是不能准确判断出的,要通过KeyUp 事件来判定 )
这里简单的列举出CTRL+其它键的组合判定代码:
private void Form3_KeyUp(object sender, KeyEventArgs e){if (e.Control){MessageBox.Show("KeyUp:Ctrl+" + e.KeyValue.ToString());}}
(六)捕获PrScrn按键事件
通过一种钩子的方式可以判定PrScrn 按键事件,钩子可以获取任何键盘事件。
C#_e.Handled用法
如果你希望用户按F1弹出chm帮助,代码如下:
private void textBoxSize_KeyPress(object sender, KeyPressEventArgs e){// Remove all characters that are not numbers, backspace, or enter.if ((e.KeyChar < 48 || e.KeyChar > 57) &&e.KeyChar != 8 && e.KeyChar != 13){e.Handled = true;}else if (e.KeyChar == 13){// Apply size if the user hits enterTextBox txt = (TextBox)sender;if (txt.Text.Length > 0)ApplyTextSize(txt.Text);e.Handled = true;this.richTextBoxText.Focus();}}
总结:Handled 获取或设置一个值,该值指示是否处理过KeyPress 事件
e.Handled = false的时候表示可以接受该事件
e.Handled = true时表示已经处理了事件(即不处理当前键盘事件)
KeyChar 获取或设置与按下的键对应的字符
MSDN帮助 https://msdn.microsoft.com/zh-cn/library/system.windows.forms.keypresseventargs.keychar.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
using System; using System.Windows.Forms;public class Form1: Form {public Form1(){// Create a TextBox control.TextBox tb = new TextBox();this.Controls.Add(tb);tb.KeyPress += new KeyPressEventHandler(keypressed);}private void keypressed(Object o, KeyPressEventArgs e){// The keypressed method uses the KeyChar property to check // whether the ENTER key is pressed. // If the ENTER key is pressed, the Handled property is set to true, // to indicate the event is handled.if (e.KeyChar == (char)Keys.Return){e.Handled = true;}}public static void Main(){Application.Run(new Form1());} }
转载于:https://www.cnblogs.com/lhyqzx/p/5955440.html
C#键盘事件处理(来源网上)相关推荐
- 计算器Java代码实现(进行按钮事件处理和键盘事件处理)
声明: 由于本人是Java初学者,对Java语言理解不是很透彻 以下代码部分参考了许多课本和网上的一些资料,经过本人对这些资料的理解,所以写下了以下程序代码 经运行测试,已经完全实现了计算器的基础功能 ...
- 20个优秀的JavaScript 键盘事件处理库
键盘事件是 Web 开发中最常用的事件之一,通过对键盘事件的捕获和处理可以提高网站的易用性和交互体验.下面,我们向大家介绍收集的20款优秀的 JavaScript 键盘事件处理库,帮助开发人员轻松处理 ...
- JavaScript 键盘事件处理
键盘事件是 Web 开发中最常用的事件之一,通过对键盘事件的捕获和处理可以提高网站的易用性和交互体验.下面,我们向大家介绍收集的20款优秀的 JavaScript 键盘事件处理库,帮助开发人员轻松处理 ...
- 【Appium+python】特殊键盘事件处理-国产机型的搜索处理。
问题原因及概述 在编写脚本的时候,发现华为.OPPE等国产手机无法处理 driver.keyevent('66')# 84搜索键 66回车键 导致PyCharm 反复报错 解决方案 国产机大多为厂商修 ...
- 一步一步学Silverlight 2系列(6):键盘事件处理
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- java tree类子项的添加和删除_Java学习2-23 JTree节点的删除与添加(来源网上)
这几天在做关于树的题目,感觉结点的操作有点难度. import java.awt.*; import java.awt.event.*; import javax.swing.*; import ja ...
- windows键盘事件处理
键盘事件 WM_KEYDOWN WM_KEYUP WM_CHAR 点击按键与消息的关系 区别: WM_KEYDOWN:可以识别键盘上的大多数按键,但不能区分大小写字母,以及数字和特殊符号,只能大写字母 ...
- QML入门教程(13): 鼠标键盘事件处理
键盘事件 qml对键盘的处理,处理利用Keys,例如按键按下的处理: pressed(KeyEvent event) This signal is emitted when a key has bee ...
- Cocos Creator 键盘事件处理
1 在onLoad() 中,监听键盘事件 onLoad () { cc.systemEvent.on('keydown', this.onKeyDown, this); } 注意,不是 this.no ...
最新文章
- Linux包管理器apt/apt-get发现远程代码执行漏洞
- VS2005中ajax安装指南[转]
- C语言数组学完学啥,我的c语言学习-数组专题
- 安卓注册手机短信验证码验证的案例-01
- 利用dbstart和dbshut脚本自动启动和停止数据库的问题
- jquery $.get()、$.ajax()与后台servlet交互方法
- 【OpenCV】OpenCV实战从入门到精通之 -- 基本图像绘制
- mysql 一对多 join_mysql多表left join 1对多的解决办法
- 猫癣病毒躲猫猫移师广东东莞月入百万作者
- SPSS22.0简体中文破解版(32位/64位)使用方法
- ZFAKA-自动发卡收款平台全套搭建教程(含支付接口设置)
- html5 canvas 涂鸦画板
- 用10行代码实现鉴黄
- python生成文字点选验证码→训练yolo目标检测模型→识别文字点选验证码
- Nelder-Mead(内德-米德)算法
- Java使用iText生成word文 表格、图片、表格里插图片、页眉、页脚、图片页脚、(学习帖)
- Ubuntu/linux c开发(4)线程池
- C++(10-2)——类的使用
- 配置华为防火墙双机热备
- Docker中安装python-pcl库