学习:响应键盘按键
来源:互联网 发布:淘宝转人工服务电话 编辑:程序博客网 时间:2024/05/10 18:52
实现功能:
- 当按下键盘上的按键时,触发一些“事件”。
案例:
使用键盘上的方向键或wasd来控制label
的移动。
涉及内容:
- 值
KeyChar
KeyCode
- 事件
KeyPress
KeyDown
KeyUp
- 属性
form.KeyPreview
参考:C#如何关联键盘按钮,或者依次搜索MSDN的文档(需要详细了解的话建议这样做)
P.s. 如果看参考博文看得一头雾水,可以看看本博文的 问与答 ,看看能不能解决一些问题,也可以看完本博文之后在看一次参考博文。
实现步骤:
添加
Form1_Load
事件中并在内设置Form1.KeyPreview = true
必须这么做,否则下面的
KeyPress
KeyDown
KeyUp
事件无法执行添加
Form1_KeyPress
或者Form1_KeyDown
或者Form1_KeyUp
事件- 在这些事件中使用
if
或者switch
判断函数判断输入的是什么键,再执行什么命令
代码分析:
namespace 响应键盘按键{ public partial class Form1 : Form { //step是控制每一次按下按键所移动的距离 int step = 5; public Form1() { InitializeComponent(); } //窗体Form1的加载事件 private void Form1_Load(object sender, EventArgs e) { //必须要有,否则无法响应下面的事件 this.KeyPreview = true; } private void Form1_KeyPress(object sender, KeyPressEventArgs e) { //向左 if (e.KeyChar == 'a') label1.Location = new Point(label1.Location.X - step, label1.Location.Y); //向上 if (e.KeyChar == 'w') label1.Location = new Point(label1.Location.X, label1.Location.Y - step); //向右 if (e.KeyChar == 'd') label1.Location = new Point(label1.Location.X + step, label1.Location.Y); //向下 if (e.KeyChar == 's') label1.Location = new Point(label1.Location.X, label1.Location.Y + step); } private void Form1_KeyDown(object sender, KeyEventArgs e) { //switch函数现在还没有学到,可以先看看书中P79页,注意这个函数的格式 switch(e.KeyCode) { //Keys.Up就是指方向键的上键,下面同理 case Keys.Up: label1.Location = new Point(label1.Location.X, label1.Location.Y - step); break; case Keys.Down: label1.Location = new Point(label1.Location.X, label1.Location.Y + step); break; case Keys.Left: label1.Location = new Point(label1.Location.X - step, label1.Location.Y); break; case Keys.Right: label1.Location = new Point(label1.Location.X + step, label1.Location.Y); break; } } }}
注意事项:
见C#如何关联键盘按钮的注意事项
问与答:
- 在
Form1_KeyPress
事件中使用KeyCode
可以吗?
不可以。因为KeyCode
是属于KeyEventArgs
的,KeyChar
是属于KeyPressEventArgs
的,不是属于你的东西不能用。 - 我记不住谁属于谁啊?
在vs中,输入的时候可以先输入Key
,如果是属于他的就会自动弹出来啦,不是属于他的是不会显示出来的。还有,你可以将鼠标放到KeyCode
或者KeyChar
上面查看他们的属性,会有显示他们的从属关系。切记,是在vs中,在这里是不显示,这个办法在代码改错中也是很有用的。 KeyEventArgs
这些是什么鬼?
英文翻译为“事件参数”(自己翻的,可能有错)。看上面的代码分析中可以看到private void Form1_Load(object sender, EventArgs e)
等等事件后面的括号中会有一个类似EventArgs e
的东西,就是这个东西,你可以像问题2那样将鼠标放到上面查看一下,或者到MSDN中查看详细的概念。- 参考的那篇博客中那些数字是什么鬼?
那些是ASCII,可以看一下书本56页或者上网查看一下,不过我不是很清楚博主在博主在博文中使用这个的作用。
建议:
- 不要直接复制上面的代码,理解之后再盲打一次来实现
- 问与答 中的第二问中的第二个建议十分有用
- 要养成查看MSDN里面的文档的习惯
- 我也是初学,极有可能会出现错误,如果你发现了,不妨在评论区或私信告诉我,十分感谢
- 有什么好的想法或建议也可以在评论区或私信告诉我
1 0
- 学习:响应键盘按键
- 响应键盘按键
- 实现键盘多按键响应。
- window下响应键盘按键
- 响应键盘特定按键(只响应数字键)
- 求教,为何键盘第一次按键不响应
- 如何在对话框中响应键盘按键
- 如何在对话框中响应键盘按键
- 在VC/MFC中响应键盘按键
- 在VC/MFC中响应键盘按键
- 在VC/MFC中响应键盘按键
- Android如何键盘按键响应事件
- 在VC/MFC中响应键盘按键
- 在VC/MFC中响应键盘按键
- Android如何键盘按键响应事
- VC++中单个键盘按键的响应
- 设置对话框响应键盘的按键
- Android如何键盘按键响应事件
- 一直接收键盘字符,输出对应的字符
- .bat批处理(二):%0 %1——给批处理脚本传递参数
- 从大神那里找来的php面试 ----数据库部分
- Android Drawable--总览
- Delphi 画布对象及其简单应用
- 学习:响应键盘按键
- js中定义变量名有哪些规范
- android 录音功能的实现
- PHP基础教程十三之反射、对象序列化
- Python package 管理工具pip安装
- js的事件分类和相关介绍
- java 计算包含中文字符串的真实长度
- Android 线程池详解
- poj 3041