winform键盘操控之组合键
winform键盘操控之升级操作
1. 键盘事件引子
- winform的每一个窗体中,都有三个事件,分别是:
KeyDown
KeyPress
KeyUp
。其中,KeyDown
与KeyUp
用的是KeyCode
跟键盘上面的每一个按键相互对应,它对应着Key的枚举,使用极其方便,而KeyPress
则是使用编码,区分大小写,在组合键操控时使用不方便。因此,我们来使用KeyDown
事件来设置窗体的快捷键,以及使用组合键进行窗体游戏的制作。
2. 键盘事件组合键操控之特殊组合键
- 在快捷键中,我们一般使用
Ctrl
与其它的键对窗体来进行特殊操控!例如QQ的提取消息,便是Ctrl
+Alt
+Z
三个组合键来进行的,在我们的项目开发之中,我们也可以利用组合键来对我们的窗体进行快捷操控! - 示例
private: System::Void btn_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {if (e->Control == true && e->Alt == true && e->KeyCode == Keys::A) {btn->Top += 10;}}
这时窗口里面的Button
按钮btn在遇到Ctrl
+Alt
+A
组合键的时候,会向下移动10个像素。
类似于Ctrl
,Alt
,Shift
与其他的键实行的组合键,即可使用此种方法实现。
3. 键盘事件组合键操控之普通组合键
- 在游戏开发之中,我们会遇到
A
+B
这样的普通键进行组合,但是这样子,利用上面的方法是不可行的!
private: System::Void btn_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {if (e->KeyData == Keys::A && e->KeyData == Keys::B) {btn->Top += 10;}}
这样子开发出来的窗体,即便是使用A
+B
的组合键,也无法是Button
按钮的KeyDown
事件触发。因为e->KeyData
不可能即是A
也是B
就类似于以下代码中if
不可能执行。
if(a == 1 && a == 2){cout << "作者真丑!!!" << endl;
}
if
语句永远不可能去执行!其中一个原因是因为a不可能同时为1和2,第二个原因作者是帅~!
所以我们需要另辟蹊径。
- 思路: 我们可以设置两个布尔值,记录两个键的按下事件,按下的时候改变为
true
,释放键盘的时候改变为false
。当俩个键的布尔值均为true
的时候,我们既可以触发组合键的事件! - 示例
bool a = false;bool b = false;private: System::Void btn_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {if (e->KeyData == Keys::A) {a = true;}if (e->KeyData == Keys::B) {b = true;}if (a&&b) {btn->Top -= 10;}}private: System::Void btn_KeyUp(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {if (e->KeyData == Keys::A) {a = false;}if (e->KeyData == Keys::B) {b = false;}}
类似于以上,既可实现普通组合键事件。
当我按下键盘上的A
+B
键位,则会触发Button
按钮的移动事件。这样子,便完成了普通组合键事件的编程!
4.KeyCode与KeyData的区别
KeyCode
最为常用,记录了键盘上按了哪个键,当使用组合键时如Ctrl
+a
,其值是A
;KeyData
可以记录组合键,当使用组合键时如Ctrl
+A
时,其值为A,ctrl
;KeyValue
则是KeyCode
的数字值,当使用组合键时如Ctrl
+A
时,其值为65(A),注意不是97(a);
注意:这三个属性对于字母键只记录其大写的值(不管你是否开启了Caps Lock
或是按下Shift
键)。
winform键盘操控之组合键相关推荐
- 蓝牙HID驱动:某键盘,Fn组合键,小概率无响应,普通Keyboard功能正常。
蓝牙HID驱动:某键盘,Fn组合键,小概率无响应,普通Keyboard功能正常. 分析:同平台产品ABC,A搭配定制键盘,有该问题,B,C均无此问题. 初步判断为A搭配的键盘有问题.但看了HCI lo ...
- winform屏蔽Alt+F4组合键以防止用户关闭对话框
winform屏蔽Alt+F4组合键以防止用户关闭对话框,屏蔽Alt + F4的方法有很多,这里列出了一个比较简单而奏效的方法. 1. 捕获窗体的KeyDown事件 给窗体添加KeyDown事件,然后 ...
- C# 如何捕获键盘按钮和组合键以及KeyPress/KeyDown事件之间的区别 (附KeyChar/KeyCode值)
1. 首先将窗口属性KeyPreview设为true,如果属性对话框中找不到,就直接在代码里添加: 2. 添加KeyPress / KeyDown事件: 1.KeyPress 和KeyDown .K ...
- 键盘上什么组合键表示热启动计算机,什么是电脑热启动?电脑怎么热启动
什么是电脑热启动? 电脑热启动又称键盘启动,在不断电状态下(即开机状态下)进行的电脑程序启动,就叫做电脑热启,也可以简化为热启动. 电脑怎么热启动? 电脑在DOS状态下运行时,即同时按下键盘上的Ctr ...
- Qt模拟键盘按键与组合键
Tab键: QKeyEvent tabKey(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier);QCoreApplication::sendEvent(th ...
- js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入
设置快捷键 这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb). hotkeys on Github hotkeys预览 __ __ __ | ...
- js检测键盘组合键,禁止F12
js检测键盘组合键ctrl+p js检测键盘组合键ctrl+d js检测键盘组合键ctrl+s js禁止F12 体验地址:点击在线体验 <!DOCTYPE html> <html l ...
- 中英文标点符号切换的组合键_最全的键盘各键及组合键功能说明,建议收藏
点击上面"蓝字"关注人民书写 键盘是最常用的输入设备,通过键盘可以将汉字.英文字母.数字.标点符号等输入到计算机中,从而向计算机发出命令.输入数据.那么键盘分为几个功能区?各键的功 ...
- 中英文标点符号切换的组合键_最全的键盘各键及组合键功能说明,好好学习
键盘是最常用的输入设备,通过键盘可以将汉字.英文字母.数字.标点符号等输入到计算机中,从而向计算机发出命令.输入数据.那么键盘分为几个功能区?各键的功能是什么呢?组合键又有什么功能呢?下面就分别予以说 ...
- 键盘组合键映射_如何在键盘上重新映射Office键
键盘组合键映射 The Office Key is a new key that you'll find on Microsoft keyboards. It lets you quickly lau ...
最新文章
- QIIME 2用户文档. 21图形界面q2studio(2019.7)
- python中bind的用法_JS中的apply、call和bind的用法和区别
- 保证业务高效运营 专有云虚拟网络是关键
- View和ViewGroup的层次关系
- _Linux进程信号详解
- MFC 设置应用程序开机启动并设置运行路径
- bash shell 快捷键
- 异步fifo_面试必杀技:异步FIFO(上) CDC的那些事(5)
- sqlite:WAL模式
- C语言爱心动态生日快乐代码
- 使用Cisco思科模拟器进行三层交换机配置
- 十大OpenGL教程
- access通过身份证号提取性别_身份证号码男女函数(excel中关于18位身份证号的提取性别公式)...
- INTERN: A New Learning Paradigm Towards General Vision
- Windows平台下 C++注册表项重命名实现
- java postgresql date_javapostgresql时区总结
- 90后歌单精选100首,我有歌,你有故事吗?
- Linux报错: terminate called after throwing an instanc
- 2019计算机研究生暑期学校,2019年度VLDB暑期学校
- 直接插入排序顺序结构