c# key event
使用C#写ui时,希望能够读取到键盘输入的事件,用于快捷键或者其他操作。本文记录操作创建key event的方法。
参考链接:
http://csharp.net-informations.com/gui/key-press-cs.htm
http://net-informations.com/q/faq/arrowkeys.html
创建事件
选中某个需要读取键盘输入事件的控件,例如button,richTextBox等。
选中properties->event之后,列表中都是可以设置的事件。
选中需要的事件,例如KeyPress,然后进行双击, vs就会创建事件并生成代码。
如下图所示:
C#代码
vs自动创建事件的程序之后,在代码中添加自己的功能。
经过测试,ascii码能够获取到,连 control + c(ascii码3)都可以.
// 每按下一个按键就会触发一次private void richTextBoxReceive_KeyPress(object sender, KeyPressEventArgs e){// 回车键if (e.KeyChar == (char)13) // enter key {serialPort.Write("\r\n");rtbOutgoing.Text = "";}// control + Celse if (e.KeyChar == (char)3){MessageBox.Show("You pressed control + c");//通过串口发送 control + cbyte[] by = { 0x03 };serialPort.Write(by, 0, by.Length);}// 其他的按键触发的时间不进行处理else if (e.KeyChar < 32 || e.KeyChar > 126){e.Handled = true; // ignores anything else outside printable ASCII range}else{//这里是一个字符一个字符的发送。serialPort.Write(e.KeyChar.ToString());}}
方向键处理
properties的event中没有关于方向键的事件,只需要在代码中重载C#的ProcessCmdKey方法。
对于control + c组合键,采用(Keys.Control | Keys.C)的方式进行判断。如下:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData){//capture up arrow keyif (keyData == Keys.Up){MessageBox.Show("You pressed Up arrow key");return true;}//capture down arrow keyif (keyData == Keys.Down){MessageBox.Show("You pressed Down arrow key");return true;}//capture left arrow keyif (keyData == Keys.Left){MessageBox.Show("You pressed Left arrow key");return true;}//capture right arrow keyif (keyData == Keys.Right){MessageBox.Show("You pressed Right arrow key");return true;}// control + C // 从这里可以看出,ProcessCmdKey函数也能够对单个字母的事件进行处理。例如A-Z,a-z。if (keyData == (Keys.Control | Keys.C)){MessageBox.Show("You pressed control + c");return true;}return base.ProcessCmdKey(ref msg, keyData);}
Tony Liu
2016-9-15, Shenzhen
c# key event相关推荐
- tslib: Selected device is not a touchscreen (must support ABS and KEY event types)解决方法
tslib: Selected device is not a touchscreen (must support ABS and KEY event types) 两种情况:一种内核未加入触摸屏的支 ...
- HTML5 元素拖拽实现 及 jquery.event.drag插件
如上图片: <!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" co ...
- Zepto源码分析-event模块
源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT l ...
- 树莓派 -- 按键 (key)使用BCM2835 gpio library
BCM2835 GPIO library介绍 This is a C library for Raspberry Pi (RPi). It provides access to GPIO and ot ...
- Tkinter 极简例子——Event篇
Tkinter Event 鼠标点击事件 from tkinter import *def printcoords(event):print(event.x, event.y)root = Tk()b ...
- Redis删除大Key
原文链接:https://www.dubby.cn/detail.html?id=9112 这里说的大key是指包含很多元素的set,sorted set,list和hash. 删除操作,我们一般想到 ...
- html 用event.keycode控制只能输入小写字母,event.keyCode键码值表 附只能输入特定的字符串代码...
event.keyCode键码值表 附只能输入特定的字符串代码 复制代码 代码如下: function onlyNum() { if(!(event.keyCode==46)&&!(e ...
- 浏览器间的差异之 event.keyCode
先看一段示例代码,在不同浏览器中的行为 <html> <head> <script src="https://cdnjs.cloudflare.com/ajax ...
- TvInput Cec key事件传递流程
一.TV应用MainActivity 1.dispatchInputEvent 这里会特殊处理back键,只有Home键才会退出TV应用,back键会传递给cec连接的device处理.如果按键不在黑 ...
最新文章
- android 弹出fragment,Android中ViewPager获取当前显示的Fragment
- opencv 斑马线,条纹检测
- Imageloader8-压缩图片
- Nginx高效学习手册(建议收藏)
- 【教程】minicom使用教程
- flume快速入门及应用
- 程序10 VC编写批量重命名工具
- 旗下首发双模5G+双挖孔全面屏!Redmi K30真机谍照曝光
- 编程语言对比 基本数据类型
- 误差反向传播法(一)【计算图】
- unrecognized selector sent to instance的一类解决办法
- python 分割不等长字符串表格_python如何将字符串等长分割
- c语言小车路径规划算法,基于路径规划的室内小车定位系统
- int转byte数组以及相关原理
- python在直方图上画折线图_在python中,在柱状图上绘制一个折线图
- 一个大型高并发系统的性能调优会涉及到什么?
- 通过摄像机视频设备或者流媒体服务器SDK获取到数据转换成RTMP流实现网页手机微信播放
- PT100(RTD)三线制四线制测量方案
- LuceneSolrElasticSearch-面试题
- Google桌面搜索中文版印象(转)