C# 中使用 PreviewKeyDown 和 KeyUp 事件处理按键按下和释放
C# 中使用 PreviewKeyDown 和 KeyUp 事件处理按键按下和释放
本文介绍如何在 C# 的 Windows 窗体应用程序中使用 PreviewKeyDown 和 KeyUp 事件来处理按键按下和释放。
**代码示例:**csharpprivate bool key1down = false;private bool key2down = false;private bool key3down = false;
private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e){ switch (e.KeyCode) { case Keys.A: if (!key1down) MessageBox.Show('A down'); key1down = true; break; case Keys.B: if (!key2down) MessageBox.Show('B down'); key2down = true; break; case Keys.C: if (!key3down) MessageBox.Show('C down'); key3down = true; break; }}
private void Form1_KeyUp(object sender, KeyEventArgs e){ switch (e.KeyCode) { case Keys.A: MessageBox.Show('A up'); key1down = false; break; case Keys.B: MessageBox.Show('B up'); key2down = false; break; case Keys.C: MessageBox.Show('C up'); key3down = false; break; }}
代码解释:
-
变量声明: -
key1down,key2down,key3down: 这些布尔变量用于跟踪 A、B、C 键当前是否被按下。 -
Form1_PreviewKeyDown 事件: - 当窗体接收到按键消息时触发此事件。 - 使用
e.KeyCode获取按下的键,并与Keys枚举值进行比较。 - 如果检测到按下的是 A、B 或 C 键,则对应设置相应的布尔变量为true,并显示 'down' 消息框。 -
Form1_KeyUp 事件: - 当窗体接收到按键释放消息时触发此事件。 - 同样使用
e.KeyCode获取释放的键。 - 如果检测到释放的是 A、B 或 C 键,则对应设置相应的布尔变量为false,并显示 'up' 消息框。
优化建议:
- 可以使用字典或数组来存储按键状态,以便更方便地管理多个按键。- 可以将消息框替换为其他操作,例如移动控件、触发游戏逻辑等。
希望这篇指南能帮助您理解如何在 C# 中使用 PreviewKeyDown 和 KeyUp 事件处理按键按下和释放!
原文地址: https://www.cveoy.top/t/topic/PJN 著作权归作者所有。请勿转载和采集!