【发布时间】:2019-10-06 14:57:36
【问题描述】:
我有一个捕捉键盘键的类,我想捕捉一个特定的组合:
Alt + 1
如果检测到这种组合来做我的事情。
这是我尝试过的:
private bool isAltPressed;
private bool isOnePressed;
private bool bothPressed;
private void HookManager_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.LMenu)
isAltPressed = true;
if (e.KeyCode == Keys.D1)
isOnePressed = true;
if (isAltPressed & isOnePressed)
bothPressed = true;
}
private void HookManager_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (bothPressed)
// Do something...
if (e.KeyCode == Keys.LMenu)
{
isAltPressed = false;
bothPressed = false;
}
if (e.KeyCode == Keys.D1)
{
isOnePressed = false;
bothPressed = false;
}
}
那么我需要在哪里验证两个键都被按下和释放然后执行我的操作?
【问题讨论】:
-
什么是
HookManager?您的事件处理程序适用于哪些事件? -
这是每次按键或释放时捕获的类
-
为什么我们需要猜测里面有什么?您必须提供minimal reproducible example,以便您的问题得到解答。
-
通常您会在按下键或按下键时触发操作。设置
e.Handled = true;以抑制winforms 的正常键处理。请参阅:KeyEventArgs Class。您也可以使用Keyboard.IsKeyDown(Key) 来测试密钥的状态。
标签: c# winforms key keyboard-shortcuts