C# 如何处理按键和up&;钥匙放下?
我有一个捕捉键盘键的类,我想捕捉一个特定的组合:C# 如何处理按键和up&;钥匙放下?,c#,winforms,key,keyboard-shortcuts,C#,Winforms,Key,Keyboard Shortcuts,我有一个捕捉键盘键的类,我想捕捉一个特定的组合: 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 ==
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;
}
}
那么,我需要在哪里验证这两个键是否都已按下和释放,然后再执行我的操作呢?尝试以下操作:
if ( e.KeyData == (Keys.Alt | Keys.D1) )
Keys是具有flag属性的结构
这意味着几个关键代码可以与逻辑或运算符组合以形成结果
[Flags]
public enum Keys ...
您不应该等待alt键被释放来执行您的操作。除非您能解释为什么需要确保在“执行某项操作”之前必须释放alt键和按下的键,否则以下代码在
KeyUp
或KeyDown
事件中都应足够
if (e.Modifiers == Keys.Alt && e.KeyCode == Keys.D1)
{
// Do Something
}
什么是钩管理器?您的事件处理程序用于哪些事件?这是一个类,用于捕获每次按键或释放为什么我们需要猜测其中的内容?你必须提供一个答案,这样你的问题才能得到回答。通常你会在按下键或向上键时触发一个动作。设置
e.Handled=true
以抑制winforms的正常密钥处理。请参阅:。您还可以使用来测试密钥的状态。